แนะนำ: ใช้ ASP เพื่อทำแผนภูมิวงกลมแผนภูมิบาร์ ฯลฯ ในงานของเราเรามักจะต้องแปลงข้อมูลเป็นแผนภูมิแท่งแผนภูมิวงกลม ฯลฯ เพื่ออำนวยความสะดวกและการวิเคราะห์ข้อมูลที่ใช้งานง่าย ที่นี่ฉันจะแนะนำส่วนประกอบที่สร้างแผนภูมิพายและแผนภูมิแท่งใน ASP: CSDrawGraph, CSDGT.ZIP เนื่องจากเป็นองค์ประกอบเราจึงต้องใช้ regsv ก่อนใช้งาน
การเขียนโปรแกรมเชิงวัตถุ
เมื่อความซับซ้อนของการออกแบบโปรแกรมเพิ่มขึ้นวิธีการเขียนโปรแกรมที่มีโครงสร้างจึงไม่เพียงพอ เหตุผลพื้นฐานสำหรับการใช้งานไม่เพียงพอคือไม่สะดวกที่จะนำรหัสกลับมาใช้ใหม่ วิธีการเชิงวัตถุเกิดขึ้นและใช้ฟังก์ชั่นการใช้รหัสซ้ำที่ค่อนข้างสมบูรณ์ผ่านการสืบทอด นักเรียนหลายคนมักจะถามคำถามระหว่างการสัมภาษณ์เมื่อสมัครงาน มาพูดคุยกันว่าการเขียนโปรแกรมเชิงวัตถุคืออะไร นักเรียนพูดไม่ออกและกลับมาถามวิธีตอบคำถามนี้ ฉันบอกเขาว่าเพียงคำเดียวก็เพียงพอแล้ว การเขียนโปรแกรมเชิงวัตถุคือการห่อหุ้มข้อมูล การเขียนโปรแกรมกระบวนทัศน์ (เทมเพลต) คือการห่อหุ้มอัลกอริทึม ต่อมาเมื่อนักเรียนพบปัญหานี้เขาตอบด้วยประโยคง่ายๆและอีกฝ่ายมองนักเรียนด้วยความชื่นชม (นักเรียนบอกฉันอย่างภาคภูมิใจในภายหลัง) ทำไม? เพราะผ่านประสบการณ์และการฝึกฝนอย่างถี่ถ้วนเท่านั้นที่สามารถสกัดได้
วิธีการออกแบบและความคิดที่มุ่งเน้นวัตถุได้รับการเสนอจริงเร็วเท่าต้นทศวรรษ 1970 จุดประสงค์คือการบังคับให้โปรแกรมจัดการข้อมูลผ่านฟังก์ชั่น ด้วยวิธีนี้การห่อหุ้มข้อมูลจะถูกนำไปใช้และข้อผิดพลาดที่เกิดจากรหัสใด ๆ ในวิธีการออกแบบก่อนหน้านี้สามารถหลีกเลี่ยงได้ มันยากมากที่จะค้นหาและแก้ไขข้อผิดพลาดนี้ จากนั้นคุณสามารถพูดได้ว่าแม้ว่าฉันจะไม่ใช้วัตถุที่มุ่งเน้นเมื่อฉันต้องการเข้าถึงข้อมูลบางอย่างฉันแค่ใช้ฟังก์ชั่นการโทรเพื่อเข้าถึงมันจะไม่เป็นไร? ใช่มันโอเค แต่มันไม่ได้บังคับ คนขี้เกียจ เมื่อฉันต้องการเพิ่ม 1 ให้ฉันทำไมฉันต้องเรียกฟังก์ชั่น? ลืมไปว่ามันง่ายกว่าที่จะบันทึกปัญหา ฮ่าฮ่าเนื่องจากความเกียจคร้านนี้มันยากที่จะจับเมื่อโปรแกรมมีข้อผิดพลาด วัตถุที่มุ่งเน้นเป็นสิ่งจำเป็นและแก้ปัญหาความเกียจคร้านของคุณจากขั้นตอนการรวบรวม
การคิดเชิงวัตถุโดยบังเอิญนั้นสอดคล้องกับการจัดการกับปัญหาในชีวิตประจำวันของเรา ตัวอย่างเช่นฉันวางแผนที่จะทิ้งถ้วยน้ำชาฉันจะทิ้งมันไปได้อย่างไร? มันง่ายเกินไปหยิบถ้วยน้ำชาเดินไปที่ถังขยะและทิ้งมันไป! ให้ความสนใจกับการวิเคราะห์กระบวนการนี้ ก่อนอื่นเราเลือกวัตถุ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ แผ่นกระดาษสามารถเขียน, ฉีกขาด, เผา ... นั่นก็คือการพูดเมื่อวัตถุถูกกำหนดวิธีการจะถูกกำหนดเช่นกัน นี่คือชีวิตประจำวันของเรา อย่างไรก็ตามเมื่อคุณคิดถึงการเขียนโปรแกรมและการดำเนินงานคอมพิวเตอร์ของเรานี่ไม่ใช่กรณี ใช้การดำเนินการ DOS เป็นตัวอย่าง ฉันต้องการลบไฟล์โดย: c:> ชื่อไฟล์ del <Enter> ที่พรอมต์ DOS ให้ความสนใจกับกระบวนการนี้ การกระทำอยู่ด้านหน้า (del) และวัตถุอยู่ด้านหลัง (ชื่อไฟล์) และวิธีการเชิงวัตถุอยู่ในลำดับตรงข้าม ดังนั้นจึงเป็นเรื่องของการสั่งซื้อมันจะมีผลกระทบอะไรบ้าง? ฮ่าฮ่าคุณต้องเห็นปรากฏการณ์นี้: ไม่พบไฟล์ อ่า ~~~ ฉันผิดฉันผิดฉันพิมพ์จดหมายในชื่อไฟล์ผิดดังนั้นฉันกลับเข้ามาอีกครั้ง: C:> ชื่อไฟล์ DEL 2 <Enter> น่าเสียดายที่เกิดขึ้นอีกครั้งรายงานคอมพิวเตอร์: ไฟล์อ่านเท่านั้น ฮ่าฮ่าเจ็บปวด :) ดังนั้นการดำเนินการของ DOS จึงละเมิดนิสัยประจำวันของเรา (แน่นอนว่าไม่มีใครคัดค้านใด ๆ มาก่อน) แต่ตอนนี้เนื่องจากการใช้การออกแบบเชิงวัตถุปัญหาเหล่านี้ได้รับการแก้ไขในเวลาที่รวบรวมไม่ใช่เวลารันไทม์ obj.fun () สำหรับคำสั่งนี้ไม่ว่าจะเป็นวัตถุหรือฟังก์ชั่นหากมีปัญหาใด ๆ กับการป้อนข้อมูลของคุณมันจะถูกรายงานในระหว่างการรวบรวมเพื่อให้คุณสามารถแก้ไขได้แทนที่จะทำผิดพลาดในระหว่างการดำเนินการซึ่งจะทำให้คุณจับข้อบกพร่องได้ทุกที่
ในเวลาเดียวกันวัตถุที่มุ่งเน้นสามารถแก้ปัญหาการใช้รหัสซ้ำ - การสืบทอด ฉันเคยเขียนชั้นเรียนสุนัขที่มีคุณลักษณะ (ตัวแปร): ขนดก, 4 ขา, หางยก (อันที่มีหางที่หย่อนยานคือหมาป่า) จมูกที่บอบบางมากและชอบกินเนื้อสัตว์และกระดูก ... วิธีการรวม (ฟังก์ชั่น): สามารถวิ่งได้กลิ่น ตกลงประเภทสุนัขถูกเขียนขึ้น แต่ในชีวิตจริงของฉันสุนัขที่ฉันมีคล้ายกับสุนัขที่ฉันเขียนมาก่อนโดยมีความแตกต่างเพียงเล็กน้อยนั่นคือสุนัขของฉันคือ: หยิกและยาวมีจมูกเล็ก ๆ ปากเล็ก ๆ ... ดังนั้นฉันได้รับประเภทใหม่ที่เรียกว่า Pug และเพิ่มคุณสมบัติใหม่ให้กับสุนัข ตกลงโปรแกรมเสร็จสิ้นและรหัสที่ถูกต้องจากโปรแกรมก่อนหน้านี้จะถูกนำมาใช้ซ้ำ - นี่คือประโยชน์ของการเขียนโปรแกรมเชิงวัตถุ ความสำเร็จของฉันเพิ่งยืนอยู่บนไหล่ของยักษ์ แน่นอนถ้าคุณใช้ VC รหัสที่นำกลับมาใช้ใหม่มากที่สุดคือไลบรารีคลาส MFC
-
ตกลงแล้วดูว่าเราใช้ ASP อย่างไร
โดยทั่วไปทุกคนใช้ภาษาสคริปต์เริ่มต้นของ IIS VBScript เป็นภาษาการดำเนินการฝั่งเซิร์ฟเวอร์ของ ASP ในตอนแรกสคริปต์ VBS และ HTML จะถูกผสมเข้าด้วยกันเพื่อให้ได้ฟังก์ชั่นบางอย่าง ตัวอย่างเช่นคุณต้องแสดง 5 ระเบียนล่าสุดในหน้าปัจจุบันนั่นคือ
1. กำหนดการเชื่อมต่อกับฐานข้อมูลก่อนเช่น:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: db_path = ../database/cnbruce2005.mdb SET Conn = Server.CreateObject (ADODB.Connection) connstr = provider = microsoft.jet.oledb.4.0; แหล่งข้อมูล = & server.mappath (db_path) conn.open connstr |
2. จากนั้นสร้างการรวบรวมบันทึกฐานข้อมูลเพื่อแยกข้อมูลที่เกี่ยวข้อง
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ตั้งค่า rs = server.createObject (adodb.recordset) SQL = เลือก Top 5 * จาก [ข่าว] สั่งซื้อโดย N_ID DESC Rs.Open SQL, Conn, 1,1 |
3. ในที่สุดแสดงข้อมูลผ่านวิธีการวนซ้ำ
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ทำในขณะที่ไม่ใช่ RS.EOF Response.write RS (n_title) Rs.Movenext วง นอกจากนี้ยังมีการปิดการดำเนินงานครั้งสุดท้ายและการเปิดตัว Rs.close ตั้งค่า rs = ไม่มีอะไร |
ดังนั้นที่นี่ในการตอบสนองเขียน RS (N_TITLE) สำหรับการออกแบบเว็บขั้นสุดท้ายคาดว่าจะต้องเพิ่มองค์ประกอบแท็ก HTML อื่น ๆ ก่อนและหลัง ดังนั้นจึงมีการผสมสคริปต์ VBS และ HTML
มาดูกันอีกครั้ง หากมีหลายหน้าที่ต้องแสดงระเบียน 5 รายการเหล่านี้คุณต้องตั้งค่าแต่ละหน้าเช่นนี้หรือไม่? แน่นอนสิ่งที่สำคัญที่สุดคือการออกแบบของแต่ละหน้าแตกต่างกัน จากนั้นนี่คือการทำซ้ำ ทำซ้ำที่ไหน? คุณช่วยอย่าทำซ้ำได้ไหม
1. สำหรับการเชื่อมต่อฐานข้อมูลไฟล์การเชื่อมต่อฐานข้อมูล conn.asp ถูกสร้างขึ้นโดยตรงและเนื้อหาดังกล่าวข้างต้น
2. ตราบใดที่คุณต้องการใช้ฐานข้อมูลและจำเป็นต้องสร้างการเชื่อมต่อคุณสามารถรวมไฟล์การเชื่อมต่อฐานข้อมูลที่อ้างอิงโดยตรง
<!-#รวมไฟล์ = conn.asp->
ดังนั้นการทำซ้ำใดที่บันทึกไว้ข้างต้น? ทำซ้ำการเชื่อมต่อฐานข้อมูลแต่ละครั้ง นี่คือการต่อต้านการทำซ้ำสำหรับรหัสทั่วไปบางอย่าง มาดูกันเถอะ ถ้าฉันต้องการให้หน้านี้แสดง 5 ชิ้นและหน้านั้นเพื่อแสดง 6 ชิ้นฉันควรทำอย่างไร? เห็นได้ชัดว่านี่อาจเป็นการปรับเปลี่ยนคำสั่ง SQL อย่างง่าย ๆ ในหน้าปัจจุบันเช่นการปรับเปลี่ยนดั้งเดิมของ 5 อันดับแรกถึง 6 อันดับแรก
ตกลงดูต่อไปมีการทำซ้ำหรือไม่? ใช่ยกเว้นคำจำกัดความที่แตกต่างกันของการสืบค้น SQL ส่วนที่เหลือเป็นซ้ำทั้งหมด
ดังนั้นให้นึกถึงวิธีแก้ปัญหาต่อไป: คุณสามารถกำหนดจำนวนรายการที่สกัดด้วยตัวเองได้หรือไม่? ฉันแค่ต้องการแยกรายการเพียงไม่กี่รายการ แต่โปรแกรมต้องเขียนเท่านั้น จากนั้นในเวลานี้ฟังก์ชั่นจะมีประโยชน์ ตัวอย่างเช่นฉันกำหนดฟังก์ชั่นเช่นนี้:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ฟังก์ชั่น TopNews (TNUM) ตั้งค่า rs = server.createObject (adodb.recordset) sql = เลือก top & tnum & * จาก [ข่าว] สั่งซื้อโดย n_id desc Rs.Open SQL, Conn, 1,1 ทำในขณะที่ไม่ใช่ RS.EOF Response.write RS (n_title) Rs.Movenext วง Rs.close ตั้งค่า rs = ไม่มีอะไร ฟังก์ชันสิ้นสุด |
จากนั้นคุณสามารถใช้ TopNews (5) หรือ TopNews (6) เพื่อให้ความต้องการเสร็จสมบูรณ์
... เมื่อมองแวบแรกดูเหมือนว่า ASP จะใช้ฟังก์ชั่นและในที่สุดก็เสร็จสมบูรณ์ เนื่องจากฟังก์ชั่นโปรแกรมหลักถูกสร้างเป็นโมดูลฟังก์ชั่นคุณต้องเรียกมันโดยตรงเมื่อใช้ฟังก์ชั่นนี้บนหน้าเบื้องหน้า หากจำเป็นให้แก้ไขค่าพารามิเตอร์ฟังก์ชันให้เป็นตอนจบที่สมบูรณ์แบบ/
เหตุใดจึงมีการแนะนำชั้นเรียนใน ASP? ประเภทนี้คืออะไร? และจะใช้อย่างไร?
ในภาษาสคริปต์ ASP VBScript มีคีย์เวิร์ดคลาสซึ่งสามารถใช้เพื่อประกาศคลาสที่กำหนดเอง ตัวอย่างเช่น
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ชื่อชั้นเรียน งบ ชั้นเรียนจบ |
ที่นี่สมาชิกภาครัฐหรือเอกชนสามารถประกาศในงบรวมถึงฟังก์ชั่นสมาชิกและคุณลักษณะ
JavaScript ใช้ฟังก์ชั่นเพื่อประกาศคลาสแล้วกำหนดคุณสมบัติในฟังก์ชันผ่าน this.prototype และวิธีการนี้ Func จะกำหนด
อันไหนง่ายที่จะเลือกอันไหน หลังจากกำหนดชื่อของชั้นเรียนนั่นคือชั้นเรียนสิ่งที่สามารถทำได้ที่นี่?
คนแรก เอกสาร MSDN: ใน Visual Basic 6.0 เมื่อสร้างและทำลายโมดูลคลาสโมดูลคลาสจะใช้การเริ่มต้นและยุติเหตุการณ์เพื่อดำเนินการที่จำเป็นทั้งหมด เมื่อพบวัตถุเป็นครั้งแรกหลังจากคำสั่งใหม่เหตุการณ์เริ่มต้นจะถูกยกขึ้นและเมื่อการอ้างอิงล่าสุดไปยังวัตถุจะถูกปล่อยออกมาเหตุการณ์ที่สิ้นสุดจะถูกยกขึ้นทันที อย่างไรก็ตามวิธีการเหตุการณ์เหล่านี้สามารถเรียกได้โดยตรงได้ตลอดเวลาระหว่างการดำเนินการ
ดังนั้นฉันมักจะเห็นตัวอย่างเช่นนี้:
Class Cnbruce 'ประกาศคลาสชื่อ Cnbruce
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: cnrose ส่วนตัว คลาสย่อย class_initialize cnrose = ฉันชื่อ cnrose สิ้นสุดย่อย คลาสย่อย class_terminate () สิ้นสุดย่อย ชั้นเรียนจบ |
ดูนี่คือการเริ่มต้น
นอกจากนี้ยังมีวิธีการปล่อยและรับในคลาส ASP ตัวอย่างเช่นเพิ่มระหว่างคลาส cnbruce ของรหัสด้านบน ... คลาสสิ้นสุด:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ทรัพย์สินสาธารณะรับ yname yname = cnrose จุดสิ้นสุดของทรัพย์สิน |
นั่นคือ:
Class Cnbruce 'ประกาศคลาสชื่อ Cnbruce
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: cnrose ส่วนตัว คลาสย่อย class_initialize cnrose = ฉันชื่อ cnrose สิ้นสุดย่อย คลาสย่อย class_terminate () สิ้นสุดย่อย ทรัพย์สินสาธารณะรับ yname yname = cnrose จุดสิ้นสุดของทรัพย์สิน ชั้นเรียนจบ |
ดังนั้นวิธีการแยกค่าตัวอย่างเช่น
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ตั้งค่า AAA = ใหม่ cnbruce Response.write aaa.yname |
โปรดทราบว่า aaa.yname รู้สึกเล็กน้อย AAA เป็นวัตถุที่กำหนดเป็นคลาส CNBRUCE เอาต์พุตสุดท้ายจะแสดงเป็น yname รับค่าในวัตถุของคลาสนี้ เนื้อหาค่าของมันคือค่าของตัวแปร cnrose และค่าได้รับการเริ่มต้น ดังนั้นผลลัพธ์สุดท้ายคือชื่อของฉันคือ cnrose
นี่คือ Get ซึ่งแยกด้านในของคลาสที่ห่อหุ้มอยู่แล้วโดยตรงดังนั้นสิ่งที่เกี่ยวกับการปล่อยให้? นั่นคือการดำเนินการเข้าถึงแบบโต้ตอบภายนอกไปยังชั้นเรียน ตัวอย่างเช่นตอนนี้ฉันใช้ค่าที่กำหนดไว้ภายนอกกับคลาส นั่นคือก่อนกำหนด:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ทรัพย์สินสาธารณะให้ MNAME (NNN) cnrose = nnn จุดสิ้นสุดของทรัพย์สิน |
ความหมายของมันง่ายมาก ค่าของพารามิเตอร์ NNN จะถูกกำหนดให้กับตัวแปร cnrose ตามค่าภายนอกที่แตกต่างกัน จากนั้นโปรแกรมการรวมกันของ OK นั่นคือเนื้อหาของตัวแปร cnrose ที่แสดงไม่ได้เป็นเนื้อหาที่เริ่มต้น แต่ค่าที่ไม่แน่นอนที่นำไปใช้ภายนอกโดย LET จากนั้นวิธีการใช้ให้
aaa.mname = sdasdasd
เพียงกำหนดค่าโดยตรง จากนั้นดูที่โปรแกรมทั้งหมด:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: - คลาส cnbruce cnrose ส่วนตัว คลาสย่อย class_initialize cnrose = ฉันชื่อ cnrose สิ้นสุดย่อย ทรัพย์สินสาธารณะรับ yname yname = cnrose จุดสิ้นสุดของทรัพย์สิน ทรัพย์สินสาธารณะให้ MNAME (NNN) cnrose = nnn จุดสิ้นสุดของทรัพย์สิน ชั้นเรียนจบ ตั้งค่า AAA = ใหม่ cnbruce aaa.mname = hahahoho Response.write aaa.yname - |
แม้ว่าค่าของ aaa.mname จะถูกกำหนดให้เป็น hahahoho ตามทรัพย์สินสาธารณะให้ mname (nnn) ค่าของมันคือตัวแปร cnrose เมื่อส่งออก aaa.yname ตามทรัพย์สินสาธารณะได้รับ yname มันไม่น่าแปลกใจที่ค่าผลลัพธ์คือ -
สำหรับโปรแกรมการทำงานพวกเขาถูกกำหนดเป็นฟังก์ชั่นฟังก์ชั่นหรือรูทีนย่อยย่อยในคลาส
ดังนั้นโดยทั่วไปเป็นเพียง wrapper ของฟังก์ชั่นและเป็นเรื่องง่ายที่จะเขียนและดูดีเมื่อสมัคร (ชื่อคลาสโดยตรง, วิธี, ชื่อคลาส, แอตทริบิวต์ -_-!) แต่อย่าคาดหวังว่ามันจะมีบริการคิดเชิงวัตถุเช่น Java หรือ. NET
เวลามี จำกัด และจุดเริ่มต้นและจุดจบเป็นเพียงเล็กน้อย
แบ่งปัน: เคล็ดลับสำหรับการใช้ ASP เพื่อถ่ายโอนข้อมูลรูปแบบ HTML ไปยัง Excel เรียนรู้วิธีการสร้างหน้า ASP เพื่อสตรีมข้อมูล HTML ไปยังสเปรดชีต EXECL และแสดงสเปรดชีต EXECL ใน IE จนถึงตอนนี้มีหลายวิธีในการสร้างตารางข้อมูล Excel โดยใช้เทคโนโลยี ASP และคุณยังสามารถใช้กลุ่ม Excel 8.0 VBA ฝั่งเซิร์ฟเวอร์