ASP Tệp Global.asa
Tệp Global.asa
Tệp Global.asa là một tệp tùy chọn có thể chứa các khai báo về đối tượng, biến và phương thức mà mọi trang trong ứng dụng ASP có thể truy cập được.
Tất cả các tập lệnh trình duyệt hợp lệ (JavaScript, VBScript, JScript, PerlScript, v.v.) đều có thể được sử dụng trong Global.asa.
Tệp Global.asa chỉ có thể chứa những nội dung sau:
- Sự kiện ứng dụng
- Sự kiện phiên
- khai báo <đối tượng>
- KiểuKhai báo thư viện
- chỉ thị #include
Lưu ý: Tệp Global.asa phải được lưu trữ trong thư mục gốc của ứng dụng ASP và mỗi ứng dụng chỉ có thể có một tệp Global.asa.
Sự kiện trong Global.asa
Trong Global.asa, bạn có thể yêu cầu ứng dụng và đối tượng phiên phải làm gì khi ứng dụng/phiên bắt đầu và phải làm gì khi ứng dụng/phiên kết thúc. Mã cho việc này được đặt trong trình xử lý sự kiện. Tệp Global.asa có thể chứa bốn loại sự kiện:
Application_OnStart - Xảy ra khi người dùng ĐẦU TIÊN gọi trang đầu tiên trong ứng dụng ASP. Sự kiện này xảy ra sau khi máy chủ Web được khởi động lại hoặc sau khi tệp Global.asa được chỉnh sửa. Sự kiện "Session_OnStart" xảy ra ngay sau sự kiện này.Session_OnStart - Sự kiện này xảy ra MỌI lần người dùng MỚI yêu cầu trang đầu tiên của họ trong ứng dụng ASP.
Session_OnEnd - Sự kiện này xảy ra MỌI lần người dùng kết thúc phiên. Phiên người dùng kết thúc sau khi người dùng không yêu cầu một trang trong một thời gian nhất định (theo mặc định là 20 phút).
Application_OnEnd - Sự kiện này xảy ra sau khi người dùng LAST kết thúc phiên. Thông thường, sự kiện này xảy ra khi máy chủ Web dừng. Quy trình này được sử dụng để dọn dẹp cài đặt sau khi Ứng dụng dừng, chẳng hạn như xóa bản ghi hoặc ghi thông tin vào tệp văn bản.
Tệp Global.asa có thể trông giống như thế này:
<script language="vbscript" runat="server">
sub Application_OnStart
' some code
end sub
sub Application_OnEnd
' some code
end sub
sub Session_OnStart
' some code
end sub
sub Session_OnEnd
' some code
end sub
</script>
Lưu ý: Vì chúng tôi không thể sử dụng dấu phân cách tập lệnh ASP (<% và %>) để chèn tập lệnh vào tệp Global.asa nên chúng tôi đặt các chương trình con bên trong phần tử HTML <script>.
<đối tượng> Tuyên bố
Có thể tạo các đối tượng có phạm vi phiên hoặc ứng dụng trong Global.asa bằng cách sử dụng thẻ <object>.
Lưu ý: Thẻ <object> phải nằm ngoài thẻ <script>!
Cú pháp
<object runat="server" scope=" scope " id=" id "
{progid=" progID "|classid=" classID "}>
....
</object>
Parameter | Description |
---|---|
scope | Sets the scope of the object (either Session or Application) |
id | Specifies a unique id for the object |
ProgID | An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version]
Either ProgID or ClassID must be specified. |
ClassID | Specifies a unique id for a COM class object. Either ProgID or ClassID must be specified. |
Ví dụ
Ví dụ đầu tiên tạo một đối tượng thuộc phạm vi phiên có tên "MyAd" bằng cách sử dụng tham số ProgID:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object>
Ví dụ thứ hai tạo một đối tượng thuộc phạm vi ứng dụng có tên "MyConnection" bằng cách sử dụng tham số ClassID:
<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>
Các đối tượng được khai báo trong tệp Global.asa có thể được sử dụng bởi bất kỳ tập lệnh nào trong ứng dụng:
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")%>
KiểuKhai báo thư viện
TypeLibrary là nơi chứa nội dung của tệp DLL tương ứng với đối tượng COM. Bằng cách bao gồm lệnh gọi tới TypeLibrary trong tệp Global.asa, các hằng số của đối tượng COM có thể được truy cập và mã ASP có thể báo cáo lỗi tốt hơn. Nếu ứng dụng Web của bạn dựa trên các đối tượng COM đã khai báo kiểu dữ liệu trong thư viện kiểu, bạn có thể khai báo thư viện kiểu trong Global.asa.
Cú pháp
<!--METADATA TYPE="TypeLib"
file=" filename "
uuid=" id "
version=" number "
lcid=" localeid "
-->
Parameter | Description |
---|---|
file | Specifies an absolute path to a type library.
Either the file parameter or the uuid parameter is required |
uuid | Specifies a unique identifier for the type library.
Either the file parameter or the uuid parameter is required |
version | Optional. Used for selecting version. If the requested version is not found, then the most recent version is used |
lcid | Optional. The locale identifier to be used for the type library |
Giá trị lỗi
Máy chủ có thể trả về một trong các thông báo lỗi sau:
Error Code | Description |
---|---|
ASP 0222 | Invalid type library specification |
ASP 0223 | Type library not found |
ASP 0224 | Type library cannot be loaded |
ASP 0225 | Type library cannot be wrapped |
Lưu ý: Thẻ METADATA có thể xuất hiện ở bất kỳ đâu trong tệp Global.asa (cả thẻ <script> bên trong và bên ngoài). Tuy nhiên, thẻ METADATA nên xuất hiện ở gần đầu tệp Global.asa.
Những hạn chế
Hạn chế về nội dung bạn có thể đưa vào tệp Global.asa:
- Bạn không thể hiển thị văn bản được viết trong tệp Global.asa. Tập tin này không thể hiển thị thông tin
- Bạn chỉ có thể sử dụng các đối tượng Máy chủ và Ứng dụng trong các chương trình con Application_OnStart và Application_OnEnd. Trong chương trình con Session_OnEnd, bạn có thể sử dụng các đối tượng Máy chủ, Ứng dụng và Phiên. Trong chương trình con Session_OnStart, bạn có thể sử dụng bất kỳ đối tượng tích hợp nào
Cách sử dụng các chương trình con
Global.asa thường được sử dụng để khởi tạo các biến.
Ví dụ dưới đây cho thấy cách phát hiện thời gian chính xác mà khách truy cập lần đầu tiên đến một trang Web. Thời gian được lưu trữ trong biến Phiên có tên là "đã bắt đầu" và giá trị của biến "đã bắt đầu" có thể được truy cập từ bất kỳ trang ASP nào trong ứng dụng:
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>
Global.asa cũng có thể được sử dụng để kiểm soát quyền truy cập trang.
Ví dụ bên dưới cho thấy cách chuyển hướng mọi khách truy cập mới đến một trang khác, trong trường hợp này là đến trang có tên "newpage.asp":
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>
Và bạn có thể bao gồm các hàm trong tệp Global.asa.
Trong ví dụ bên dưới, chương trình con Application_OnStart xảy ra khi máy chủ Web khởi động. Sau đó, chương trình con Application_OnStart gọi một chương trình con khác có tên là "getcustomers". Chương trình con "getcustomers" mở cơ sở dữ liệu và lấy tập bản ghi từ bảng "customers". Bộ bản ghi được gán cho một mảng, nơi nó có thể được truy cập từ bất kỳ trang ASP nào mà không cần truy vấn cơ sở dữ liệu:
<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>
Ví dụ về Global.asa
Trong ví dụ này, chúng tôi sẽ tạo tệp Global.asa để đếm số lượng khách truy cập hiện tại.
- Application_OnStart đặt biến Ứng dụng "khách truy cập" thành 0 khi máy chủ khởi động
- Chương trình con Session_OnStart thêm một vào biến "khách truy cập" mỗi khi có khách truy cập mới đến
- Chương trình con Session_OnEnd sẽ trừ một từ "khách truy cập" mỗi khi chương trình con này được kích hoạt
Tệp 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>
Để hiển thị số lượng khách truy cập hiện tại trong tệp ASP:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%>
online now!</p>
</body>
</html>