Tệp Global.asa ASP
- Trang trước ASP #include
- Trang tiếp theo Email ASP
Tệp Global.asa là một tệp tùy chọn, nó có thể chứa các đối tượng, biến và phương pháp được các trang của ứng dụng ASP truy cập. Tất cả các script hợp lệ của trình duyệt đều có thể được sử dụng trong Global.asa.
Tệp Global.asa
Tệp Global.asa là một tệp tùy chọn, nó có thể chứa các đối tượng, biến và phương pháp được các trang của ứng dụng ASP truy cập. Tất cả các script hợp lệ của trình duyệt đều có thể được sử dụng trong Global.asa.
Tệp Global.asa có thể chứa các nội dung sau:
- Sự kiện Application
- Sự kiện Session
- Định nghĩa <object>
- Khai báo TypeLibrary
- Hướng dẫn #include
Ghi chú: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, chúng ta có thể thông báo cho đối tượng application và session về những gì họ cần làm khi khởi động và kết thúc. Mã thực hiện nhiệm vụ này được đặt trong bộ điều khiển sự kiện. Tệp Global.asa có thể chứa bốn loại sự kiện: }}
Application_OnStart - Sự kiện này sẽ xảy ra mỗi khi người dùng đầu tiên gọi trang đầu tiên trong ứng dụng ASP. Sự kiện này sẽ xảy ra khi máy chủ web khởi động lại hoặc tệp Global.asa được chỉnh sửa. Sự kiện "Session_OnStart" sẽ xảy ra ngay sau sự kiện này.
Session_OnStart - Sự kiện này sẽ xảy ra mỗi khi người dùng yêu cầu trang đầu tiên trong ứng dụng ASP của họ.
Session_OnEnd - Sự kiện này sẽ xảy ra mỗi khi người dùng kết thúc session. Trong khoảng thời gian quy định (sự kiện mặc định là 20 phút) không có yêu cầu trang nào được gửi, session sẽ kết thúc.
Application_OnEnd - Sự kiện này sẽ xảy ra sau khi người dùng cuối cùng kết thúc session của mình. Trình độ典型 là, sự kiện này sẽ xảy ra khi máy chủ web ngừng hoạt động. Chương trình con này được sử dụng để xóa cài đặt sau khi ứng dụng ngừng hoạt độ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ể giống như sau:
<script language="vbscript" runat="server"> sub Application_OnStart 'mã nào đó end sub sub Application_OnEnd 'mã nào đó end sub sub Session_OnStart 'mã nào đó end sub sub Session_OnEnd 'mã nào đó end sub </script>
Ghi chú:Do không thể sử dụng ký hiệu phân cách vạch ngang của ASP (<% và %>) để chèn mã trong tệp Global.asa, chúng ta cần sử dụng thẻ <script> của HTML.
Định nghĩa <object>
Có thể tạo đối tượng với phạm vi session hoặc application bằng cách sử dụng thẻ <object> trong tệp Global.asa.
Ghi chú:Thẻ <object> nên nằm ngoài thẻ <script>.
Cú pháp:
<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}> .... </object>
Tham số | Mô tả |
---|---|
scope | Đặt phạm vi (phạm vi) của đối tượng (Session hoặc Application). |
id | Chỉ định một id duy nhất cho đối tượng. |
ProgID |
id liên quan đến ClassID. Định dạng của ProgID là: [Vendor.]Component[.Version]. ProgID hoặc ClassID phải được chỉ định. |
ClassID |
Chỉ định một id duy nhất cho đối tượng COM. ProgID hoặc ClassID phải được chỉ định. |
thực thể
Lần tạo thứ nhất tạo ra một đối tượng tên là "MyAd" sử dụng tham số ProgID trong phạm vi session:
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator" </object>
Lần tạo thứ hai tạo ra một đối tượng tên là "MyConnection" 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 này có thể được sử dụng bởi bất kỳ vần bản nào trong ứng dụng.
GLOBAL.ASA:
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator" </object>
Bạn có thể truy cập đối tượng "MyAd" này từ bất kỳ trang nào trong ứng dụng ASP của mình:
Một tệp .ASP:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
Khai báo TypeLibrary
TypeLibrary (Thư viện Loại) là một hộp chứa các tệp DLL tương ứng với các đối tượng COM. Bằng cách bao gồm gọi TypeLibrary trong Global.asa, bạn có thể truy cập vào các hằng số của đối tượng COM, đồng thời mã ASP cũng có thể báo cáo lỗi tốt hơn. Nếu ứng dụng của trang web của bạn phụ thuộc vào đối tượng COM đã được khai báo trong thư viện loại, bạn có thể khai báo thư viện loại trong Global.asa.
Cú pháp:
<!--METADATA TYPE="TypeLib" file="filename" uuid="typelibraryuuid" version="versionnumber" lcid="localeid" -->
Tham số | Mô tả |
---|---|
file | Định nghĩa đường dẫn tuyệt đối đến thư viện loại. Các tham số file hoặc uuid, không thể thiếu cả hai. |
uuid | Định nghĩa một định danh duy nhất cho thư viện loại. Các tham số file hoặc uuid, không thể thiếu cả hai. |
version | Tùy chọn. Sử dụng để chọn phiên bản. Nếu không tìm thấy phiên bản được chỉ định, sẽ sử dụng phiên bản gần nhất. |
lcid | Tùy chọn. Định danh khu vực cho thư viện loại. |
Giá trị lỗi
Máy chủ sẽ trả về một trong các thông báo lỗi sau:
Lỗi | Mã | Mô tả |
---|---|---|
ASP | 0222 | Invalid type library specification |
ASP | 0223 | Thư viện loại không tìm thấy |
ASP | 0224 | Thư viện loại không thể tải |
ASP | 0225 | Thư viện loại không thể được bao bọc |
Ghi chú:Thẻ METADATA có thể nằm ở bất kỳ vị trí nào trong tệp Global.asa (cả trong và ngoài thẻ <script>). Tuy nhiên, chúng tôi vẫn khuyên bạn nên đặt thẻ METADATA ở đầu tệp Global.asa.
Giới hạn
Về các nội dung có thể được tham chiếu trong tệp Global.asa:
Bạn không thể hiển thị văn bản trong tệp Global.asa. Tệp này không thể hiển thị thông tin.
Bạn chỉ có thể sử dụng đối tượng Server và Application trong thủ tục con Application_OnStart và Application_OnEnd. Trong thủ tục con Session_OnEnd, bạn có thể sử dụng Server, Application và Session. Trong thủ tục con Session_OnStart, bạn có thể sử dụng bất kỳ đối tượng trong xây dựng sẵn.
Cách sử dụng thủ tục con
Global.asa thường được sử dụng để khởi tạo các biến.
Ví dụ dưới đây trình bày cách kiểm tra thời gian chính xác khi người truy cập đến trang lần đầu tiên. Thời gian này được lưu trữ trong đối tượng Session có tên "started", và giá trị của biến "started" có thể được bất kỳ trang ASP nào trong ứng dụng truy cập:
<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 truy cập vào trang.
Ví dụ dưới đây trình bày cách chuyển hướng mỗi người truy cập mới đến một trang khác, trong ví dụ này sẽ chuyển hướng đến trang "newpage.asp":
<script language="vbscript" runat="server"> sub Session_OnStart Response.Redirect("newpage.asp") end sub </script>
Chúng ta cũng có thể bao gồm các hàm trong Global.asa.
Trong ví dụ dưới đây, khi máy chủ Web khởi động, thủ tục con Application_OnStart cũng sẽ khởi động. Sau đó, thủ tục con Application_OnStart sẽ gọi thủ tục con khác có tên là "getcustomers". Thủ tục con "getcustomers" sẽ mở một cơ sở dữ liệu, sau đó lấy lại một tập dữ liệu từ bảng "customers". Tập dữ liệu này sẽ được gán cho một mảng, mà không cần kiểm tra cơ sở dữ liệu, bất kỳ trang ASP nào cũng có thể truy cập vào mảng này:
<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>
Mô hình Global.asa
Trong ví dụ này, chúng ta sẽ tạo một tệp Global.asa có thể tính số lượng khách truy cập hiện tại.
Application_OnStart thiết lập giá trị biến "visitors" của Application thành 0 khi máy chủ khởi động.
Mỗi khi có người dùng mới truy cập, hàm Session_OnStart sẽ tăng 1 cho biến "visitors".
Mỗi khi hàm Session_OnEnd được kích hoạt, hàm này sẽ từ biến "visitors" giảm 1.
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>
Tệp ASP này sẽ hiển thị số lượng người dùng hiện tại:
<html> <head> </head> <body> <p>Có <%response.write(Application("visitors"))%> người trực tuyến hiện tại!</p> </body> </html>
- Trang trước ASP #include
- Trang tiếp theo Email ASP