ในซีรี่ส์ที่เผยแพร่เราได้หารือเกี่ยวกับวัตถุ ASP สองรายการ: วัตถุแอปพลิเคชันและวัตถุเซสชันดังนั้นเราจึงสามารถเข้าถึงคอลเลกชันวิธีการคุณสมบัติและเหตุการณ์ที่จัดทำโดยวัตถุแอปพลิเคชันและวัตถุเซสชัน ส่วนนี้จะศึกษาวัตถุทั้งสองนี้จากมุมมองของการเขียนโปรแกรม
·สร้างวัตถุแอปพลิเคชันเมื่อมีการโหลด ASP DLL และคำขอแรกไปยังหน้าเว็บ ASP จะถูกตอบกลับ วัตถุนี้มีสถานที่จัดเก็บสำหรับเก็บตัวแปรและวัตถุที่มีให้สำหรับหน้าเว็บทั้งหมดที่เปิดโดยผู้เข้าชมทั้งหมด
·เมื่อผู้เข้าชมร้องขอหน้า ASP จากเว็บไซต์เป็นครั้งแรกให้สร้างวัตถุเซสชันสำหรับเขาและยังคงถูกต้องจนกว่าจะถึงระยะเวลาการหมดเวลาเริ่มต้น (หรือระยะเวลาหมดเวลาที่กำหนดโดยสคริปต์) วัตถุมีสถานที่จัดเก็บสำหรับการจัดเก็บตัวแปรและวัตถุเฉพาะสำหรับหน้าเว็บที่เปิดโดยผู้เข้าชมในระหว่างกิจกรรมของเซสชัน
ความสัมพันธ์
1. ภาพรวมของสมาชิกวัตถุแอปพลิเคชัน ASP
ส่วนนี้อธิบายการรวบรวมวิธีการและเหตุการณ์ของวัตถุแอปพลิเคชัน (วัตถุแอปพลิเคชันไม่มีคุณสมบัติ) วัตถุเซสชัน (พร้อมคุณสมบัติ) อธิบายไว้ในส่วนถัดไป จากนั้นเราจะสำรวจงานที่ประสบความสำเร็จกับวัตถุเหล่านี้ต่อไปโดยอธิบายรายละเอียดเพิ่มเติมว่าสมาชิกแต่ละคนของแต่ละวัตถุทำงานอย่างไร
1. การรวบรวมวัตถุแอปพลิเคชัน
วัตถุแอปพลิเคชันมีสองคอลเลกชันที่สามารถใช้ในการเข้าถึงตัวแปรและวัตถุที่เก็บไว้ในพื้นที่แอปพลิเคชันทั่วโลก คอลเลกชันและคำอธิบายมีดังนี้:
การรวบรวมและคำอธิบายของวัตถุแอปพลิเคชันตาราง
| รวมตัว | อธิบาย |
| สารบัญ | ไม่มีชุดของตัวแปรทั้งหมด (และค่าของพวกเขา) ที่เก็บไว้ในวัตถุแอปพลิเคชันที่กำหนดโดยใช้องค์ประกอบ <jobal> รวมถึงการอ้างอิงถึงอาร์เรย์ตัวแปรและอินสแตนซ์วัตถุประเภทตัวแปร |
| StaticObjects | คอลเลกชันของตัวแปรทั้งหมด (และค่าของพวกเขา) ที่เก็บไว้ในวัตถุแอปพลิเคชันที่กำหนดโดยใช้องค์ประกอบ <jobch> |
2. วิธีการของวัตถุแอปพลิเคชัน
วิธีการวัตถุแอปพลิเคชันอนุญาตให้ลบค่าในพื้นที่แอปพลิเคชันทั่วโลกควบคุมการเข้าถึงตัวแปรภายในพื้นที่นั้นพร้อมกัน วิธีการและคำแนะนำจะแสดงในตารางต่อไปนี้:
วิธีการและคำอธิบายของวัตถุแอปพลิเคชันตาราง
| วิธี | อธิบาย |
| สารบัญ Remove (variable_name) | ลบตัวแปรชื่อ variable_name ออกจากแอปพลิเคชันคอลเลกชัน |
| สารบัญ removeAll () | ลบตัวแปรทั้งหมดออกจาก Application.content Collection |
| ล็อค() | ล็อควัตถุแอปพลิเคชันเพื่อให้เฉพาะหน้า ASP ปัจจุบันเท่านั้นที่สามารถเข้าถึงเนื้อหาได้ ใช้เพื่อให้แน่ใจว่าการดำเนินการพร้อมกันที่ดำเนินการโดยวิธีการที่อนุญาตให้ผู้ใช้สองคนอ่านและแก้ไขค่าพร้อมกันไม่ได้รับความเสียหาย |
| ปลดล็อก () | ปลดล็อกเว็บเพจ ASP บนวัตถุแอปพลิเคชัน |
โปรดทราบว่าตัวแปรไม่สามารถลบออกจากแอปพลิเคชันคอลเลกชัน StaticObjects ระหว่างรันไทม์
3. เหตุการณ์ของวัตถุแอปพลิเคชัน
วัตถุแอปพลิเคชันมีสองเหตุการณ์ที่เกิดขึ้นเมื่อเริ่มต้นและสิ้นสุดดังที่แสดงในตารางต่อไปนี้:
เหตุการณ์และคำอธิบายของวัตถุแอปพลิเคชันตาราง
| เหตุการณ์ | อธิบาย |
| เริ่มต้น | ทริกเกอร์เมื่อ ASP เริ่มต้นก่อนที่ผู้ใช้จะร้องขอหน้าเว็บที่จะดำเนินการและก่อนที่ผู้ใช้รายใดจะสร้างวัตถุเซสชัน ใช้เพื่อเริ่มต้นตัวแปรสร้างวัตถุหรือเรียกใช้รหัสอื่น |
| ต่อ | ทริกเกอร์เมื่อแอปพลิเคชัน ASP สิ้นสุดลง เกิดขึ้นหลังจากเซสชันผู้ใช้สุดท้ายสิ้นสุดลงและรหัสทั้งหมดในเหตุการณ์ onend ของเซสชันนั้นได้ถูกดำเนินการแล้ว ในตอนท้ายของมันตัวแปรทั้งหมดที่มีอยู่ในแอปพลิเคชันจะถูกยกเลิก |
ภาพรวมสมาชิกวัตถุเซสชันของ ASP
ส่วนนี้สรุปสมาชิกทั้งหมดของวัตถุเซสชัน
1. การรวบรวมวัตถุเซสชัน
วัตถุเซสชันมีสองชุดที่สามารถใช้ในการเข้าถึงตัวแปรและวัตถุที่เก็บไว้ในพื้นที่เซสชันท้องถิ่นของผู้ใช้ คอลเลกชันและคำอธิบายเหล่านี้แสดงในตารางต่อไปนี้:
ตั้งค่าและคำอธิบายของวัตถุเซสชันตาราง
| รวมตัว | อธิบาย |
| สารบัญ | การรวบรวมตัวแปรทั้งหมดและค่าของพวกเขาที่เก็บไว้ในวัตถุเซสชันนี้โดยเฉพาะและตัวแปรและค่าเหล่านี้ไม่ได้ถูกกำหนดโดยใช้องค์ประกอบ <jobch> รวมถึงการอ้างอิงถึงอาร์เรย์ตัวแปรและอินสแตนซ์วัตถุประเภทตัวแปร |
| StaticObjects | คอลเลกชันของตัวแปรทั้งหมดที่เก็บไว้ในวัตถุเซสชันนี้ที่กำหนดโดยใช้องค์ประกอบ <jobch> |
2. ลักษณะของวัตถุเซสชัน
วัตถุเซสชันมีคุณสมบัติสี่ประการ คุณสมบัติและคำอธิบายเหล่านี้แสดงในตารางต่อไปนี้:
ตารางที่ 3-7 คุณสมบัติและคำอธิบายของวัตถุเซสชัน
| คุณสมบัติ | อธิบาย |
| รหัสผ่าน | อ่าน/เขียน จำนวนเต็ม. กำหนดหน้ารหัสสำหรับการแสดงเนื้อหาหน้าในเบราว์เซอร์ หน้ารหัสเป็นค่าตัวเลขของชุดอักขระและหน้ารหัสที่แตกต่างกันอาจใช้ในภาษาและสถานที่ต่าง ๆ ตัวอย่างเช่นรหัส ANSI หน้า 1252 ใช้ในภาษาอังกฤษแบบอเมริกันและภาษายุโรปส่วนใหญ่ รหัสหน้า 932 ใช้สำหรับอักขระญี่ปุ่น |
| LCID | อ่าน/เขียน จำนวนเต็ม. กำหนด ID พื้นที่หน้า (LCID) ที่ส่งไปยังเบราว์เซอร์ LCID เป็นตัวย่อมาตรฐานสากลที่ระบุภูมิภาคโดยเฉพาะ LCID ยังสามารถใช้ในรูปแบบสกุลเงินและข้อความอื่น ๆ ตราบใดที่มีพารามิเตอร์ LCID เสริม LCID ยังสามารถตั้งค่าในคำแนะนำการประมวลผล ASP <%& hellip;%> และมีความสำคัญกว่าการตั้งค่าในแอตทริบิวต์ LCID ของเซสชัน บทนี้ให้รายการคำแนะนำการประมวลผล ASP ในภายหลัง |
| sessionid | อ่านอย่างเดียว รูปร่างยาว ส่งคืนตัวระบุเซสชันสำหรับเซสชันนี้ซึ่งสร้างโดยเซิร์ฟเวอร์เมื่อสร้างเซสชัน ไม่ซ้ำกันในช่วงอายุการใช้งานของวัตถุแอปพลิเคชันหลักเท่านั้นดังนั้นจึงสามารถนำกลับมาใช้ใหม่ได้เมื่อแอปพลิเคชันใหม่เริ่มต้นขึ้น |
| การหมดเวลา | อ่าน/เขียน จำนวนเต็ม. กำหนดระยะเวลาการหมดเวลาเป็นนาทีสำหรับเซสชั่นนี้ หากผู้ใช้ไม่ได้รีเฟรชหรือขอหน้าเว็บในช่วงเวลาหมดเวลาเซสชันจะสิ้นสุดลง คุณสามารถแก้ไขได้ตามต้องการในแต่ละหน้าเว็บ ค่าเริ่มต้นคือ 10 นาที เวลานี้ควรสั้นลงในเว็บไซต์ที่มีการใช้งานสูง |
3. วิธีการของวัตถุเซสชัน
วัตถุเซสชันอนุญาตให้ลบค่าที่ระบุออกจากพื้นที่เซสชันระดับผู้ใช้และสิ้นสุดเซสชันตามต้องการ วิธีการและคำอธิบายของวัตถุ Seesion จะแสดงในตารางต่อไปนี้:
วิธีการและคำอธิบายของวัตถุเซสชันตาราง
| วิธี | อธิบาย |
| สารบัญ Remove (variable_name) | ลบตัวแปรชื่อ variable_name ออกจากเซสชันคอลเลกชัน |
| สารบัญ removeAll () | ลบตัวแปรทั้งหมดออกจากเซสชันคอลเลกชัน |
| ละทิ้ง() | เมื่อการดำเนินการของหน้าเว็บเสร็จสมบูรณ์เซสชันผู้ใช้ปัจจุบันจะสิ้นสุดลงและวัตถุเซสชันปัจจุบันไม่มีเอกสาร แต่หลังจากที่มีการเรียกวิธีการแล้วตัวแปรของเซสชันปัจจุบันในหน้ายังสามารถเข้าถึงได้ เมื่อผู้ใช้ร้องขอหน้าถัดไปเซสชันใหม่จะเริ่มต้นและจะสร้างวัตถุเซสชันใหม่ (ถ้ามีอยู่) โปรดทราบว่าตัวแปรไม่สามารถลบได้จากเซสชันคอลเลกชัน StaticObjects ระหว่างรันไทม์ |
4. เหตุการณ์ของวัตถุเซสชัน
วัตถุเซสชันมีสองเหตุการณ์ที่เกิดขึ้นเมื่อเริ่มต้นและสิ้นสุดดังที่แสดงในตารางที่ 3-9:
ตารางที่ 3-9 เหตุการณ์และคำอธิบายของวัตถุเซสชัน
| เหตุการณ์ | อธิบาย |
| เริ่มต้น | ทริกเกอร์เมื่อเซสชันผู้ใช้ ASP เริ่มต้นก่อนที่ผู้ใช้จะร้องขอเว็บเพจที่ร้องขอ ใช้ในการเริ่มต้นตัวแปรสร้างวัตถุหรือเรียกใช้รหัสอื่น |
| ต่อ | ทริกเกอร์เมื่อเซสชันผู้ใช้ ASP สิ้นสุดลง เริ่มต้นจากคำขอหน้าสุดท้ายของผู้ใช้ไปยังแอปพลิเคชันเหตุการณ์จะถูกทริกเกอร์หากเกินระยะเวลาการหมดเวลาเซสชันที่กำหนดไว้ล่วงหน้า เมื่อเซสชันสิ้นสุดลงให้ยกเลิกตัวแปรทั้งหมดในเซสชันนั้น เหตุการณ์นี้จะถูกทริกเกอร์เมื่อใช้วิธีการละทิ้งเพื่อยุติเซสชันผู้ใช้ ASP ในรหัส |
กิจกรรมที่ใช้แอปพลิเคชันและเซสชัน
แอปพลิเคชันและวัตถุเซสชันของ ASP สะท้อนให้เห็นถึงเหตุการณ์คุณสมบัติที่วัตถุในตัว ASP อื่น ๆ ไม่มี อย่างไรก็ตามดังที่เห็นในตารางสมาชิกวัตถุก่อนหน้านี้เป็นเหตุการณ์ที่เกี่ยวข้องกับเซสชัน ASP และการทำงานของแอปพลิเคชัน
1. ตัวจัดการเหตุการณ์สำหรับแอปพลิเคชันและเซสชัน
เมื่อใดก็ตามที่แอปพลิเคชันหรือเซสชันเริ่มต้นหรือสิ้นสุด ASP จะกระตุ้นเหตุการณ์ เหตุการณ์เหล่านี้สามารถตรวจพบและตอบโดยการเขียนรหัสสคริปต์สามัญในไฟล์พิเศษที่เรียกว่า global.asa ซึ่งอยู่ในไดเรกทอรีรากของแอปพลิเคชัน (สำหรับเว็บไซต์เริ่มต้นคือ /inetpub /wwwroot ไดเรกทอรีหรือเป็นโฟลเดอร์ที่กำหนดเป็น แอปพลิเคชันจริง) ไฟล์นี้สามารถมีองค์ประกอบ <Ojrop> อย่างน้อยหนึ่งอย่างของ HTML ที่ใช้ในการสร้างอินสแตนซ์ส่วนประกอบที่จะใช้ภายในแอปพลิเคชันหรือเซสชันผู้ใช้
รหัสต่อไปนี้เป็นตัวอย่างของไฟล์ global.asa เรามุ่งเน้นไปที่องค์ประกอบ <jobch> และบรรทัดของรหัสเหล่านั้นที่เริ่มต้นด้วยคำหลักที่ตั้งไว้:
| <!- ประกาศอินสแตนซ์ของส่วนประกอบ ASPCounter ด้วยขอบเขตระดับแอปพลิเคชัน //-> <Object ID = ASPCounter runat = Server Scope = Application progid = mswc.counters> </วัตถุ> <!- ประกาศอินสแตนซ์ของส่วนประกอบ aspcontentlimk ด้วยขอบเขตระดับเซสชัน //-> <Object ID = AspContentLink runat = server scope = เซสชัน progid = mswc.nextlink> </วัตถุ> <ภาษาสคริปต์ = vbscript runat = เซิร์ฟเวอร์> Application_onstart () 'สร้างอินสแตนซ์ของชุดเร็กคอร์ด ADO ที่มีขอบเขตระดับแอปพลิเคชัน ตั้งค่าแอปพลิเคชัน (Adoconnection) = Server.CreateObject (ADODB.Connection) Dim Vararray (3) 'สร้างอาร์เรย์ตัวแปรและเติมเต็ม Vararray (0) = นี่คือ Vararray (1) = ตัวแปรอาร์เรย์ Vararray (2) = เก็บไว้ใน Vararray (3) = วัตถุแอปพลิเคชัน แอปพลิเคชัน (variant_array) = vararray'store มันในแอปพลิเคชัน แอปพลิเคชัน (start_time) = cstr (ตอนนี้) 'เก็บวันที่/เวลาเป็นสตริง แอปพลิเคชัน (VIST_COUNT) = 0 'ชุดตัวนับตัวนับเป็นศูนย์ สิ้นสุดย่อย Application_onend () ตั้งค่าแอปพลิเคชัน (Adoconnection) = ไม่มีอะไร สิ้นสุดย่อย SESSON_ONSTART () 'สร้างอินสแตนซ์ของส่วนประกอบ adrotator ด้วยขอบเขตระดับเซสชัน ตั้งค่าเซสชัน (aspadrotator) = server.createObject (mswc.adrotator) Dim Vararray (3) 'สร้างตัวแปร arry และเติมเต็ม Vararray (0) = นี่คือ Vararray (1) = ตัวแปรอาร์เรย์ Vararray (2) = เก็บไว้ใน Vararray (3) = วัตถุเซสชัน เซสชัน (variant_array) = vararray 'เก็บไว้ในเซสชัน เซสชัน (start_time) = cstr (ตอนนี้) 'เก็บวันที่/เวลาเป็นสตริง 'เราสามารถเข้าถึงเนื้อหาของคำขอและการตอบกลับใน session_onstart 'ตัวจัดการเหตุการณ์สำหรับหน้าเว็บที่เริ่มต้นเซสชัน 'สถานที่ที่บริบทหน้า ASP มีให้เช่นนี้ 'ตัวอย่างเราสามารถรับที่อยู่ IP ของผู้ใช้: เซสชัน (your_ip_address) = request.serverVariables (remote_addr) application.lock intvisits = แอปพลิเคชัน (visit_count) +1 แอปพลิเคชัน (visit_count) = intvisits application.unlock สิ้นสุดย่อย Sub Session_onend () ตั้งค่าเซสชัน (aspadrotator) = ไม่มีอะไร สิ้นสุดย่อย </สคริปต์> |
เนื่องจากไฟล์ global.asa นี้ใช้ในหน้าตัวอย่างในบทนี้จึงจำเป็นต้องใส่ไฟล์ในไดเรกทอรีรูทของเว็บไซต์หรือในไดเรกทอรีที่กำหนดค่าเป็นแอปพลิเคชันเสมือนจริงและรวมไดเร็กทอรีตัวอย่างไฟล์อื่น ๆ .
อ่านและจัดเก็บค่า
หมายเหตุตัวอย่างข้างต้นวิธีการอ่านแอปพลิเคชันและตัวแปรเซสชันเช่นเดียวกับที่คุณทำในการรวบรวมวัตถุคำขอและการตอบสนอง ตั้งค่าตัวแปรเหล่านี้:
| แอปพลิเคชัน (variable_name) = variable_value แอปพลิเคชัน (variable_name) = variable_array_variable_name ตั้งค่าแอปพลิเคชัน (variable_name) = object_reference |
รับค่าของตัวแปรเหล่านี้:
| variable_value = แอปพลิเคชัน (variable_name) variant_array_variable = application (variable_name) ตั้งค่า object_reference = แอปพลิเคชัน (variable_name) |
แน่นอนวิธีการเดียวกันสามารถใช้สำหรับวัตถุเซสชัน
คุณสามารถดูวิธีการล็อคและปลดล็อกวัตถุแอปพลิเคชันเมื่อเข้าถึงจากตัวประมวลผลเหตุการณ์เซสชัน สิ่งนี้ไม่จำเป็นเมื่อเข้าถึงค่าในวัตถุแอปพลิเคชันโดยใช้รหัสภายในเหตุการณ์แอปพลิเคชัน นี่เป็นเพราะในแอปพลิเคชันใด ๆ มีเพียงหนึ่งอินสแตนซ์ของวัตถุแอปพลิเคชันและรหัสของตัวจัดการเหตุการณ์จะดำเนินการเฉพาะเมื่อไม่มีเซสชันผู้ใช้ที่ใช้งานอยู่
คุณยังสามารถดูว่าตัวนับเซสชันผู้ใช้ขั้นพื้นฐานถูกนำไปใช้อย่างไร นี่คือตัวแปรระดับแอปพลิเคชัน VIST_COUNT ซึ่งจะเพิ่มขึ้นโดยอัตโนมัติเมื่อเซสชันใหม่เริ่มต้น โดยทั่วไปมันไม่ได้ จำกัด เพียงแค่บันทึกค่าลงในแอปพลิเคชันหรือวัตถุเซสชัน ตัวอย่างเช่นเว็บไซต์ของผู้พัฒนาเว็บมีไฟล์ Global.asa ที่สอดคล้องกันใน http://webdev.wrox.co.uk ได้มาจากการร้องขอการรวบรวม ServerVariables นี่เป็นวิธีพื้นฐานในการนับจำนวนผู้เข้าชมและรวบรวมข้อมูลพื้นฐานเกี่ยวกับผู้เข้าชม