แฟ้ม Global.asa
แฟ้ม Global.asa เป็นไฟล์ตัวเลือกที่สามารถมีการประกาศของวัตถุตัวแปรและวิธีการที่สามารถเข้าถึงได้โดยทุกหน้าในโปรแกรมประยุกต์ ASP
สคริปต์ทั้งหมดที่เบราว์เซอร์ที่ถูกต้อง (JavaScript, VBScript, JScript, PerlScript, etc.) สามารถนำมาใช้ภายใน Global.asa
แฟ้ม Global.asa สามารถมีเพียงต่อไปนี้:
- แอพลิเคชันเหตุการณ์
- เหตุการณ์เซสชั่น
- <object> ประกาศ
- ประกาศ TypeLibrary
- สั่ง #include
Note: แฟ้ม Global.asa จะต้องเก็บไว้ในไดเรกทอรีรากของแอพลิเคชันของ ASP และการประยุกต์ใช้แต่ละคนสามารถมีเพียงไฟล์ Global.asa หนึ่ง
เหตุการณ์ใน Global.asa
ใน Global.asa คุณสามารถบอกใบสมัครและวัตถุเซสชั่นจะทำอย่างไรเมื่อแอพลิเคชัน / ครั้งจะเริ่มต้นและจะทำอย่างไรเมื่อแอพลิเคชัน / ครั้งปลาย รหัสนี้จะอยู่ในตัวจัดการเหตุการณ์ แฟ้ม Global.asa สามารถมีสี่ประเภทของกิจกรรม:
Application_OnStart - เกิดขึ้นเมื่อผู้ใช้คนแรกเรียกหน้าแรกในโปรแกรมประยุกต์ ASP เหตุการณ์นี้เกิดขึ้นหลังจากที่เว็บเซิร์ฟเวอร์จะเริ่มต้นใหม่หรือหลังแฟ้ม Global.asa มีการแก้ไข "Session_OnStart" เหตุการณ์เกิดขึ้นทันทีหลังจากเหตุการณ์นี้Session_OnStart - เหตุการณ์นี้เกิดขึ้นทุกครั้งที่ผู้ใช้ใหม่ขอหน้าแรกของเขาหรือเธอในการประยุกต์ใช้ ASP
Session_OnEnd - เหตุการณ์นี้เกิดขึ้นทุกครั้งที่ผู้ใช้จะสิ้นสุดลงเซสชั่น A ใช้งานเซสชั่นหลังจากจบหน้ายังไม่ได้รับการร้องขอโดยผู้ใช้สำหรับเวลาที่กำหนด (by default this is 20 minutes)
Application_OnEnd - เหตุการณ์นี้เกิดขึ้นหลังจากที่ผู้ใช้คนสุดท้ายได้สิ้นสุดลงเซสชั่น โดยปกติแล้วเหตุการณ์นี้เกิดขึ้นเมื่อเว็บเซิร์ฟเวอร์หยุด ขั้นตอนนี้จะใช้ในการทำความสะอาดการตั้งค่าหลังจากที่แอพลิเคชันหยุดเช่นบันทึกลบหรือเขียนข้อมูลไปยังแฟ้มข้อความ
แฟ้ม Global.asa อาจมีลักษณะบางอย่างเช่นนี้
<script language="vbscript" runat="server">
sub Application_OnStart
' Note: เนื่องจากเราไม่สามารถใช้ ASP คั่นสคริปต์ (<% and %>) เพื่อแทรกสคริปต์ในแฟ้ม Global.asa เราใส่ซับรูทีนภายใน HTML <script> องค์ประกอบ
<object> ประกาศ
มันเป็นไปได้ในการสร้างวัตถุกับเซสชั่นหรือขอบเขตการประยุกต์ใช้ใน Global.asa โดยใช้ <object> แท็ก
Note: <object> แท็กควรจะออกไปข้างนอก <script> แท็ก!
วากยสัมพันธ์
<object runat="server" scope=" พารามิเตอร์ ลักษณะ scope ตั้งขอบเขตของวัตถุ (either Session or Application) id ระบุรหัสเฉพาะสำหรับวัตถุ ProgID รหัสเชื่อมโยงกับรหัสระดับ รูปแบบสำหรับ ProgID เป็น [ผู้ขาย.] ตัวแทน [.Version] อย่างใดอย่างหนึ่งหรือ ProgID ClassID ต้องระบุ
ClassID ระบุรหัสเฉพาะสำหรับวัตถุคลาส COM อย่างใดอย่างหนึ่งหรือ ProgID ClassID ต้องระบุ
ตัวอย่าง
ตัวอย่างแรกสร้างวัตถุขอบเขตเซสชั่นชื่อ "MyAd" โดยใช้พารามิเตอร์ ProgID:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object> ตัวอย่างที่สองสร้างวัตถุขอบเขตการประยุกต์ใช้ชื่อ "MyConnection" โดยใช้พารามิเตอร์ ClassID:
<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object> วัตถุที่ประกาศในแฟ้ม Global.asa สามารถใช้สคริปต์ใด ๆ ในการสมัคร:
GLOBAL.ASA:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object>
You could reference the object "MyAd" from any page in the ASP application:
SOME .ASP FILE:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
TypeLibrary ประกาศ
TypeLibrary เป็นภาชนะสำหรับเนื้อหาของไฟล์ DLL ที่สอดคล้องกับวัตถุ COM ที่ โดยรวมถึงการเรียกร้องให้ TypeLibrary ในแฟ้ม Global.asa ที่เป็นค่าคงที่ของวัตถุ COM ที่สามารถเข้าถึงได้และข้อผิดพลาดสามารถรายงานที่ดีขึ้นโดยรหัส ASP หากโปรแกรมประยุกต์บนเว็บของคุณอาศัยวัตถุ COM ที่ได้ประกาศชนิดข้อมูลในห้องสมุดชนิดที่คุณสามารถประกาศไลบรารีชนิดใน Global.asa
วากยสัมพันธ์
<!--METADATA TYPE="TypeLib"
file=" พารามิเตอร์ ลักษณะ file ระบุเส้นทางที่แน่นอนไปยังห้องสมุดประเภท ทั้งพารามิเตอร์ไฟล์หรือพารามิเตอร์ UUID เป็นสิ่งจำเป็น
uuid ระบุตัวระบุที่ไม่ซ้ำกันสำหรับไลบรารีชนิด ทั้งพารามิเตอร์ไฟล์หรือพารามิเตอร์ UUID เป็นสิ่งจำเป็น
version ไม่จำเป็น. ใช้สำหรับการเลือกรุ่น ถ้ารุ่นที่ร้องขอไม่พบแล้วรุ่นล่าสุดถูกนำมาใช้ lcid ไม่จำเป็น. ระบุสถานที่ที่จะใช้สำหรับไลบรารีชนิด ค่าความผิดพลาด
เซิร์ฟเวอร์สามารถกลับมาเป็นหนึ่งในข้อความผิดพลาดต่อไปนี้:
รหัสข้อผิดพลาด ลักษณะ ASP 0222 ประเภทไม่ถูกต้องสเปห้องสมุด ASP 0223 ไม่พบไลบรารีชนิด ASP 0224 ไลบรารีชนิดไม่สามารถโหลดได้ ASP 0225 ไลบรารีชนิดไม่สามารถห่อ
Note: แท็กเมตาสามารถปรากฏที่ใดก็ได้ในแฟ้ม Global.asa (both inside and outside <script> tags) แต่ก็จะแนะนำว่าแท็กเมตาปรากฏอยู่ด้านบนของแฟ้ม Global.asa
ข้อ จำกัด
ข้อ จำกัด ในสิ่งที่คุณสามารถรวมในแฟ้ม Global.asa:
- คุณไม่สามารถแสดงข้อความที่เขียนในแฟ้ม Global.asa ไฟล์นี้ไม่สามารถแสดงข้อมูล
- คุณสามารถใช้เซิร์ฟเวอร์และการประยุกต์ใช้วัตถุใน Application_OnStart และ Application_OnEnd ซับรูทีน ในการย่อย Session_OnEnd คุณสามารถใช้เซิร์ฟเวอร์แอพลิเคชันวัตถุและเซสชัน ในการย่อย Session_OnStart คุณสามารถใช้วัตถุในตัวใด ๆ
วิธีการใช้โปรแกรมย่อย
Global.asa มักจะถูกใช้ในการเริ่มต้นตัวแปร
ตัวอย่างด้านล่างแสดงวิธีการตรวจสอบเวลาที่แน่นอนที่ผู้เข้าชมครั้งแรกที่มาถึงบนเว็บไซต์ เวลาที่จะเก็บไว้ในตัวแปรเซสชันที่มีชื่อว่า "started" และความคุ้มค่าของ "started" ตัวแปรสามารถเข้าถึงได้จากเพจ ASP ใด ๆ ในการสมัคร:
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script> Global.asa ยังสามารถใช้ในการควบคุมการเข้าถึงหน้า
ตัวอย่างด้านล่างนี้แสดงให้เห็นว่าการเปลี่ยนเส้นทางผู้เข้าชมทุกใหม่ไปยังหน้าอื่นในกรณีนี้ไปยังหน้าเว็บที่เรียกว่า "newpage.asp" :
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script> และคุณสามารถรวมถึงฟังก์ชั่นในแฟ้ม Global.asa
ในตัวอย่างด้านล่าง subroutine Application_OnStart เกิดขึ้นเมื่อเว็บเซิร์ฟเวอร์เริ่มต้น จากนั้นย่อย Application_OnStart เรียกย่อยอีกคนหนึ่งชื่อ "getcustomers" "getcustomers" subroutine เปิดฐานข้อมูลและดึงชุดบันทึกจาก "customers" ตาราง บันทึกชุดได้รับมอบหมายให้อาร์เรย์ที่สามารถเข้าถึงได้จากหน้า ASP ใด ๆ โดยไม่ต้องสอบถามฐานข้อมูล:
<script language="vbscript" runat="server">
sub Application_OnStart
getcustomers
end sub
sub getcustomers
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end sub
</script>
ตัวอย่าง Global.asa
ในตัวอย่างนี้เราจะสร้างไฟล์ Global.asa ที่นับจำนวนผู้เข้าชมในปัจจุบัน
- Application_OnStart ชุดแอพลิเคชันตัวแปร "visitors" 0 เมื่อเซิร์ฟเวอร์เริ่มต้น
- Session_OnStart ย่อยเพิ่มหนึ่งไปยังตัวแปร "visitors" ทุกครั้งที่มีผู้เข้าชมใหม่มาถึง
- Session_OnEnd ย่อยลบจาก "visitors" ทุกครั้งที่ย่อยนี้จะถูกเรียก
แฟ้ม Global.asa:
<script language="vbscript" runat="server">
Sub Application_OnStart
Application("visitors")=0
End Sub
Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
End Sub
</script> ในการแสดงจำนวนผู้เข้าชมในปัจจุบันในแฟ้มของ ASP:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%>
online now!</p>
</body>
</html>