ในบทความก่อนหน้าผู้เขียนแนะนำวิธีการใช้การตอบสนองวัตถุในตัว ASP ในบทความนี้
นอกเหนือจากวัตถุที่ใช้ในการส่งรับและประมวลผลข้อมูลแล้วยังมีวัตถุที่ใช้งานได้จริงบางอย่างที่แสดงถึงแอปพลิเคชันเซิร์ฟเวอร์ที่ใช้งานอยู่และข้อมูลผู้ใช้ส่วนบุคคลใน ASP
มาดูวัตถุแอปพลิเคชันก่อน ไฟล์. ทั้งหมดในไดเรกทอรีเสมือนเดียวกันและไดเรกทอรีย่อยประกอบด้วยแอปพลิเคชัน ASP แทนที่จะใช้วัตถุแอปพลิเคชันเราสามารถแบ่งปันข้อมูลระหว่างผู้ใช้ทั้งหมดของแอปพลิเคชันที่กำหนดและบันทึกข้อมูลอย่างต่อเนื่องระหว่างการทำงานของเซิร์ฟเวอร์ นอกจากนี้วัตถุแอปพลิเคชันยังมีวิธีการควบคุมการเข้าถึงข้อมูลระดับแอปพลิเคชันและเหตุการณ์ที่สามารถใช้ในการเรียกกระบวนการเมื่อแอปพลิเคชันเริ่มต้นและหยุด
มาเรียนรู้เกี่ยวกับวัตถุแอปพลิเคชันร่วมกัน
1. คุณลักษณะ
แม้ว่าวัตถุแอปพลิเคชันจะไม่มีคุณสมบัติในตัว แต่เราสามารถตั้งค่าคุณสมบัติที่ผู้ใช้กำหนดโดยใช้ไวยากรณ์ต่อไปนี้ซึ่งสามารถเรียกได้ว่าคอลเลกชัน
แอปพลิเคชัน (ชื่อคุณสมบัติ/การรวบรวม) = ค่า
เราสามารถประกาศและสร้างคุณสมบัติของวัตถุแอปพลิเคชันโดยใช้สคริปต์ต่อไปนี้
-
แอปพลิเคชัน (myvar) = สวัสดี
ตั้งค่าแอปพลิเคชัน (myobj) = server.createObject (myComponent)
-
เมื่อเรากำหนดคุณสมบัติของวัตถุแอปพลิเคชันมันจะยังคงอยู่จนกว่าบริการเว็บเซิร์ฟเวอร์จะถูกปิดเพื่อให้แอปพลิเคชันหยุด เนื่องจากค่าที่เก็บไว้ในวัตถุแอปพลิเคชันสามารถอ่านได้โดยผู้ใช้ทุกคนของแอปพลิเคชันคุณสมบัติของวัตถุแอปพลิเคชันจึงเหมาะอย่างยิ่งสำหรับการส่งข้อมูลระหว่างผู้ใช้แอปพลิเคชัน2. วิธี
วัตถุแอปพลิเคชันมีสองวิธีซึ่งทั้งสองใช้เพื่อจัดการผู้ใช้หลายคนที่เขียนข้อมูลที่เก็บไว้ในแอปพลิเคชัน
1. วิธีการล็อคห้ามลูกค้ารายอื่นจากการปรับเปลี่ยนคุณสมบัติของวัตถุแอปพลิเคชัน
วิธีการล็อคป้องกันลูกค้ารายอื่นจากการปรับเปลี่ยนตัวแปรที่เก็บไว้ในวัตถุแอปพลิเคชันเพื่อให้แน่ใจว่าลูกค้าเพียงรายเดียวสามารถแก้ไขและเข้าถึงตัวแปรแอปพลิเคชันในเวลาเดียวกัน หากผู้ใช้ไม่ได้เรียกวิธีการปลดล็อคอย่างชัดเจนเซิร์ฟเวอร์จะปลดล็อกวัตถุแอปพลิเคชันหลังจากไฟล์. asp สิ้นสุดลงหรือหมดเวลา
ลองดูที่โปรแกรมต่อไปนี้ที่ใช้แอปพลิเคชันเพื่อบันทึกจำนวนการเข้าถึงหน้า:-
Dim NumVisitsNumVisits = 0
application.lockapplication (numVisits) = แอปพลิเคชัน (numVisits) + 1
application.unlock
-
ยินดีต้อนรับสู่หน้านี้คุณคือ < %= แอปพลิเคชัน (numVisits) %> ผู้เยี่ยมชมในหน้านี้!
บันทึกสคริปต์ด้านบนในไฟล์. asp ของคุณและเพิ่มตัวนับลงในหน้าของคุณได้อย่างง่ายดาย
2. ตรงกันข้ามกับวิธีการล็อควิธีปลดล็อคช่วยให้ลูกค้ารายอื่นสามารถปรับเปลี่ยนคุณสมบัติของวัตถุแอปพลิเคชัน
ในตัวอย่างข้างต้นในตัวอย่างข้างต้นวิธีการปลดล็อคจะปลดล็อควัตถุเพื่อให้ไคลเอนต์ถัดไปสามารถเพิ่มค่าของ numvisits
III.
1. Application_onstart
เหตุการณ์ Application_onStart เกิดขึ้นก่อนการสร้างเซสชันใหม่ครั้งแรก (เช่นเหตุการณ์ session_onstart) เหตุการณ์ Application_onStart จะถูกทริกเกอร์เมื่อเว็บเซิร์ฟเวอร์เริ่มต้นและอนุญาตให้มีการร้องขอไฟล์ที่มีอยู่ในแอปพลิเคชัน การประมวลผลของเหตุการณ์ Application_onstart จะต้องเขียนในไฟล์ global.asaไวยากรณ์ของเหตุการณ์ application_onstart มีดังนี้:
<ภาษาสคริปต์ = scriptLanguage runat = เซิร์ฟเวอร์>
Application_onstart
สิ้นสุดย่อย
</script>
2. Applicati
on_onend
เหตุการณ์ Application_Onend เกิดขึ้นหลังจากเหตุการณ์ session_onend เมื่อแอปพลิเคชันออก
ลองมาดูบางสิ่งที่คุณต้องใส่ใจเมื่อใช้วัตถุแอปพลิเคชัน
วัตถุในตัว ASP ไม่สามารถเก็บไว้ในวัตถุแอปพลิเคชัน ตัวอย่างเช่นแต่ละบรรทัดด้านล่างส่งคืนข้อผิดพลาด
-
ตั้งแอปพลิเคชัน (var1) = เซสชัน
ตั้งค่าแอปพลิเคชัน (var2) = คำขอ
ตั้งแอปพลิเคชัน (var3) = การตอบสนอง
ตั้งค่าแอปพลิเคชัน (var4) = เซิร์ฟเวอร์
ตั้งแอปพลิเคชัน (var5) = แอปพลิเคชัน
ตั้งค่าแอปพลิเคชัน (var6) = ObjectContext
-
หากคุณเก็บอาร์เรย์ในวัตถุแอปพลิเคชันอย่าเปลี่ยนองค์ประกอบที่เก็บไว้ในอาร์เรย์โดยตรง ตัวอย่างเช่นสคริปต์ต่อไปนี้ไม่สามารถเรียกใช้ได้
< % แอปพลิเคชัน (storedArray) (3) = ค่าใหม่ %>
นี่เป็นเพราะวัตถุแอปพลิเคชันถูกนำไปใช้เป็นคอลเลกชัน องค์ประกอบอาร์เรย์ StoredArray (3) ไม่ได้รับการมอบหมายใหม่ ค่านี้จะรวมอยู่ในการรวบรวมวัตถุแอปพลิเคชันและจะเขียนทับข้อมูลใด ๆ ที่เก็บไว้ก่อนหน้านี้ในตำแหน่งนี้ ขอแนะนำให้คุณได้รับสำเนาของอาร์เรย์ก่อนที่จะดึงหรือเปลี่ยนวัตถุในอาร์เรย์เมื่อเก็บอาร์เรย์ในวัตถุแอปพลิเคชัน เมื่อทำงานในอาร์เรย์คุณควรจัดเก็บอาร์เรย์ทั้งหมดในวัตถุแอปพลิเคชันเพื่อให้การเปลี่ยนแปลงใด ๆ ที่คุณทำจะถูกเก็บไว้ สคริปต์ต่อไปนี้แสดงให้เห็นถึงสิ่งนี้
--- asp8a.asp ---
-
Dim MyArray ()
Redim MyArray (5)
myArray (0) = สวัสดี
myArray (1) = สตริงอื่น ๆ
application.lock
แอปพลิเคชัน (storedArray) = myArray
application.unlock
Response.redirect asp8b.asp
-
--- asp8b.asp ---
-
localArray = แอปพลิเคชัน (storedArray)
localArray (1) = ที่นั่น
Response.write localArray (0) & localArray (1)
application.lock
แอปพลิเคชัน (storedArray) = localArray
application.unlock
-
อีกหนึ่งวัตถุในตัว ASP ที่ใช้งานได้จริงที่มีฟังก์ชั่นที่คล้ายกันกับวัตถุแอปพลิเคชันคือเซสชัน เราสามารถใช้วัตถุเซสชันเพื่อจัดเก็บข้อมูลที่จำเป็นสำหรับเซสชันผู้ใช้เฉพาะ เมื่อผู้ใช้กระโดดระหว่างหน้าของแอปพลิเคชันตัวแปรที่เก็บไว้ในวัตถุเซสชันจะไม่ถูกล้างและตัวแปรเหล่านี้จะมีอยู่เสมอเมื่อผู้ใช้เข้าถึงหน้าในแอปพลิเคชัน เมื่อผู้ใช้ร้องขอเว็บเพจจากแอปพลิเคชันหากผู้ใช้ไม่มีเซสชันเว็บเซิร์ฟเวอร์จะสร้างวัตถุเซสชันโดยอัตโนมัติ เมื่อเซสชันหมดอายุหรือถูกทอดทิ้งเซิร์ฟเวอร์จะสิ้นสุดเซสชัน
วัตถุเซสชันบนเซิร์ฟเวอร์สามารถจัดการได้โดยการส่งคุกกี้ที่ไม่ซ้ำกันไปยังโปรแกรมไคลเอนต์ เมื่อผู้ใช้ร้องขอหน้าในแอปพลิเคชัน ASP เป็นครั้งแรก ASP จะตรวจสอบข้อมูลส่วนหัว HTTP เพื่อดูว่ามีคุกกี้ชื่อ AspsessionID ในข้อความหรือไม่ ค่าสำหรับเซสชันและส่งค่านี้ไปยังลูกค้าเป็นค่าของคุกกี้ AspsessionId ใหม่ ฟังก์ชั่นที่พบบ่อยที่สุดของวัตถุเซสชันคือการจัดเก็บการตั้งค่าของผู้ใช้ ตัวอย่างเช่นหากผู้ใช้ระบุว่าเขาไม่ชอบดูกราฟิกเขาสามารถจัดเก็บข้อมูลในวัตถุเซสชัน นอกจากนี้มักจะใช้ในโปรแกรมที่ระบุลูกค้า ควรสังเกตว่าสถานะเซสชันจะถูกเก็บไว้ในเบราว์เซอร์ที่รองรับคุกกี้และหากลูกค้าปิดตัวเลือกคุกกี้เซสชันจะไม่ทำงาน
1. คุณลักษณะ
1. SessionId
SES
คุณสมบัติ sionid ส่งคืนข้อมูลประจำตัวของผู้ใช้ เมื่อสร้างเซสชันเซิร์ฟเวอร์จะสร้างตัวตนแยกต่างหากสำหรับแต่ละเซสชัน ตัวระบุเซสชันจะถูกส่งกลับเป็นชนิดข้อมูลที่ยาว ในหลายกรณี SessionID สามารถใช้สำหรับสถิติการลงทะเบียนหน้าเว็บ
2. หมดเวลา
คุณสมบัติการหมดเวลาระบุการ จำกัด เวลาการหมดเวลาสำหรับวัตถุเซสชันของแอปพลิเคชันในไม่กี่นาที หากผู้ใช้ไม่ได้รีเฟรชหรือขอหน้าเว็บภายในระยะเวลาการหมดเวลานี้เซสชันจะสิ้นสุดลง
2. วิธี
มีเพียงวิธีเดียวสำหรับวัตถุเซสชันซึ่งถูกละทิ้ง หากคุณไม่เรียกวิธีการละทิ้งอย่างชัดเจนเซิร์ฟเวอร์จะลบวัตถุเหล่านี้เมื่อเซสชันหมดเวลา เมื่อเซิร์ฟเวอร์เสร็จสิ้นการประมวลผลหน้าปัจจุบันตัวอย่างต่อไปนี้จะปล่อยสถานะเซสชัน
< %session.abandon %>
III.
วัตถุเซสชันมีสองเหตุการณ์ที่สามารถใช้งานได้เมื่อวัตถุเซสชันเริ่มต้นและปล่อยออกมา
1. เหตุการณ์ session_onstart เกิดขึ้นเมื่อเซิร์ฟเวอร์สร้างเซสชันใหม่ เซิร์ฟเวอร์ประมวลผลสคริปต์ก่อนที่จะดำเนินการหน้าที่ร้องขอ เหตุการณ์ session_onstart เป็นเวลาที่ดีที่สุดในการตั้งค่าตัวแปรเซสชันเนื่องจากมีการตั้งค่าก่อนที่จะเข้าถึงหน้าใด ๆ
แม้ว่าวัตถุเซสชันจะยังคงอยู่เมื่อเหตุการณ์ session_onstart มีการโทรเปลี่ยนเส้นทางหรือการเรียกใช้วิธีการ แต่เซิร์ฟเวอร์หยุดการประมวลผลไฟล์ global.asa และทริกเกอร์สคริปต์ในไฟล์ที่กระตุ้นเหตุการณ์เซสชัน _onstart
เพื่อให้แน่ใจว่าผู้ใช้จะเริ่มเซสชันเสมอเมื่อเปิดหน้าเว็บเฉพาะวิธีการเปลี่ยนเส้นทางสามารถเรียกได้ในเหตุการณ์ session_onstart เมื่อผู้ใช้ป้อนแอปพลิเคชันเซิร์ฟเวอร์จะสร้างเซสชันสำหรับผู้ใช้และประมวลผลสคริปต์เหตุการณ์ Session_onStart คุณสามารถรวมสคริปต์ในเหตุการณ์นี้เพื่อตรวจสอบว่าหน้าเปิดโดยผู้ใช้เป็นหน้าเริ่มต้นหรือไม่และถ้าไม่แนะนำให้ผู้ใช้เรียกใช้วิธีการตอบกลับวิธีการ REDIRECT เพื่อเริ่มต้นเว็บเพจ ขั้นตอนมีดังนี้:
<script runat = ภาษาเซิร์ฟเวอร์ = vbscript>
Sub Session_onstart
startPage = /myapp/starthere.asp
currentPage = request.serverVariables (script_name)
ถ้า strComp (currentPage, startpage, 1) แล้ว
Response.redirect (startpage)
สิ้นสุดถ้า
สิ้นสุดย่อย
</script>
โปรแกรมข้างต้นสามารถทำงานในเบราว์เซอร์ที่รองรับคุกกี้เท่านั้น เนื่องจากเบราว์เซอร์ที่ไม่รองรับคุกกี้ไม่สามารถส่งคืนคุกกี้ SessionID เซิร์ฟเวอร์จึงสร้างเซสชันใหม่เมื่อใดก็ตามที่ผู้ใช้ร้องขอหน้าเว็บ ด้วยวิธีนี้สำหรับเซิร์ฟเวอร์ที่ร้องขอแต่ละเซิร์ฟเวอร์สคริปต์ session_onstart จะถูกประมวลผลและผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังหน้าเริ่มต้น
2. เหตุการณ์ session_onend เกิดขึ้นหรือหมดเวลาระหว่างเซสชัน
สิ่งที่ควรทราบเกี่ยวกับการใช้วัตถุเซสชัน
เซสชันสามารถเริ่มต้นได้ในสามวิธีต่อไปนี้:
1. ผู้ใช้ใหม่ขอให้เข้าถึง URL ที่ระบุไฟล์. asp ในแอปพลิเคชันและไฟล์ Global.asa ของแอปพลิเคชันประกอบด้วยกระบวนการ session_onstart
2. ผู้ใช้เก็บค่าในวัตถุเซสชัน
3. ผู้ใช้ขอไฟล์. asp ของแอปพลิเคชันและไฟล์ global.asa ของแอปพลิเคชันใช้แท็ก <jobch> เพื่อสร้างอินสแตนซ์ของวัตถุที่มีขอบเขตเซสชัน
หากผู้ใช้ไม่ร้องขอหรือรีเฟรชหน้าใด ๆ ในแอปพลิเคชันภายในเวลาที่กำหนดเซสชันจะสิ้นสุดโดยอัตโนมัติ ค่าเริ่มต้นสำหรับช่วงเวลานี้คือ 20 นาที คุณสามารถเปลี่ยนการตั้งค่าขีด จำกัด การหมดเวลาเริ่มต้นสำหรับแอปพลิเคชันโดยการตั้งค่าคุณสมบัติการหมดเวลาเซสชันในหน้าคุณสมบัติตัวเลือกแอปพลิเคชันในตัวจัดการบริการอินเทอร์เน็ต ค่านี้ควรตั้งค่าตามข้อกำหนดของเว็บแอปพลิเคชันของคุณและพื้นที่หน่วยความจำของเซิร์ฟเวอร์ ตัวอย่างเช่นหากคุณต้องการให้ผู้ใช้ที่ต้องการเรียกดูเว็บแอปพลิเคชันของคุณอยู่ในแต่ละหน้าเพียงไม่กี่นาทีคุณควรย่อค่าการหมดเวลาเริ่มต้นเริ่มต้นสำหรับเซสชันของคุณ ค่าการหมดเวลาเซสชันที่ยาวเกินไปจะทำให้เซสชันเปิดมากเกินไปและหมดทรัพยากรหน่วยความจำเซิร์ฟเวอร์ของคุณ สำหรับเซสชันเฉพาะหากคุณต้องการตั้งค่าการหมดเวลาที่เล็กกว่าค่าหมดเวลาเริ่มต้นคุณสามารถตั้งค่าวัตถุเซสชัน
คุณสมบัติหมดเวลา ตัวอย่างเช่นสคริปต์ต่อไปนี้ตั้งค่าการหมดเวลาเป็น 5 นาที
< %session.timeout = 5 %>
แน่นอนคุณสามารถตั้งค่าการหมดเวลามากกว่าการตั้งค่าเริ่มต้น นอกจากนี้คุณยังสามารถจบเซสชันผ่านวิธีการละทิ้งของวัตถุเซสชันได้อย่างชัดเจน ตัวอย่างเช่นให้ปุ่มออกในตารางการตั้งค่าพารามิเตอร์การกระทำของปุ่มเป็น URL ของไฟล์. asp ที่มีคำสั่งต่อไปนี้
< %session.abandon %>
วันนี้เราได้เรียนรู้วัตถุในตัวสองชิ้นที่มักใช้ ASP บนหน้าเว็บโดยเฉพาะอย่างยิ่งใน BBS บนเว็บหรือการแชท . วัตถุ ASP ในตัว 4 ตัวที่ฉันได้แสดงให้เห็นถึงแอปพลิเคชัน ASP ที่สมบูรณ์สำหรับคุณ โปรดให้ความสนใจกับการออกแบบเว็บไซต์ศิลปะการต่อสู้ที่สิบแปดของการออกแบบเว็บไซต์-ASP (9)