Hướng dẫn chi tiết về Global.asa kèm cách sử dụng đối tượng Application và Session trong ASP

Newsun

Believe in Good
Thành viên thân thiết
Tham gia
20/4/2008
Bài viết
9.433
Từ diễn đàn, tôi đã tiếp cận và làm việc với file Global.asa. Do vậy, tôi post mô tả chi tiết về Global.asa cùng với việc sử dụng hai đối tượng trong ASP là Application và Session lên cho mọi người nghiên cứu và bàn luận:

Đặc biệt trong phần ví dụ có minh hoạ cách đếm số người đang truy cập 1 file ASP của website, nếu như đó là file chính của ứng dụng web thì số người này là số người đang sử dụng trang web của bạn.

ASP The Global.asa file

1. Giới thiệu chung


File Global.asa là file lựa chọn mà từ đó có thể khai báo các đối tượng, các biến và các phương thức dùng cho truy cập với tất cả các trang ứng dụng ASP.
File Global.asa
File Global.asa có thể chứa những thành phần sau:
• Các sự kiện ứng dụng Application
• Các sự kiện phiên giao dịch Session
• Khai báo các <object>
• Khai báo các thư viện TypeLibrary
• Hướng dẫn dùng #include
Chú ý: File 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ó một file Global.asa suy nhất.

2. Sự kiện trong Global.asa

Trong Global.asa bạn có thể báo cho đối tượng Application và session về application/session khởi động như thế nào và khi nào, đồng thời cũng báo cho biết kết thúc khi nào và làm như thế nào để kết thúc.

Application_OnStart – Đây là sự kiện xảy ra khi người dùng đầu tiên gọi trang ASP đầu tiên của ứng dụng ASP. Sự kiện này xảy ra sau khi Webserver đã được khởi động hoặc sau khi file Global.asa được soạn thảo. 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 khi một 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 khi một người dùng kết thúc một phiên giao dịch. Một người dùng kết thúc phiên giao dịch sau khi một trang đã không được yêu cầu nữa bởi người dùng hoặc vượt quá thời gian cho phép (Thời gian mặc định là 20 phút).

Application_OnEnd - Sự kiện này xảy ra sau khi người dùng cuối cuùng đã kết thúc phiên làm việc của họ. Thường thì sự kiện này xảy ra khi Web server dừng hoạt động. Thủ tục này được sử dụng để xoá các thiết đặt sau khi ứng dụng dừng, giống như xoá các bản ghi hoặc ghi thông tin vào file text.

Một file Global.asa có thể có cấu trúc như sau:

Mã:
<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>


Chú ý: Bởi vì không sử dụng được các kịch bản ASP dạng (<% %>) để chèn vào file Global.asa, chúng ta đặt các thủ tục vào trong các <script> của HTML.

3. Khai báo các <Object>

Có thể tạo các đối tượng với phạm vi session và application trong Global.asa bằng việc sử dụng thẻ <object>

Chú ý: Thẻ <object> sẽ nằm ngoài thẻ <script>!
Syntax

....


Parameter Description
scope Thiết đặt phạm vi của đối tượng (Session hoặc Application)
id Đặc tả số thứ tự xác định của đối tượng
ProgID Một chỉ số Id liên kết với chỉ số của một class. Dạng của một ProgID là [Vendor.]Component[.Version]
Hoặc là ProgID hoặc là ClassID phải được đặc tả.
ClassID Xác định chỉ số của một lớp đối tượng.
Hoặc là ProgID hoặc là ClassID phải được xác định.

Ví dụ
Ví dụ 1, tạo ra một đối tượng phạm vi session, tên là “MyAD” bằng việc sử dụng tham số ProgID:
Mã:

Ví dụ 2, tạo ra một đôi stượng phạm vi application, tên là "MyConnection", bằng cách sử dụng tham số ClassID:
Mã:

Các đối tượng khai báo trong file Global.asa có thể được dùng bở bất kỳ script nào trong ứng dụng:
GLOBAL.ASA:
Mã:
You could reference the object "MyAd" from any page in the ASP application:
SOME .ASP FILE:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>


4. Khai báo các TypeLibrary

Một TypeLibrary là thành phần chứa các nội dung các file DLL phù hợp với đối tượng COM. Trong đó có một lời gọi đến TypeLibrary trong file Global.asa, các hằng số của đối tượng COM có thể truy nhập được và các lỗi có thể được báo cáo tốt hơn bởi ASP code. Nếu như ứng dụng Web của bạn dựa vào các đối tượng trong COM thì phải khai báo kiểu dữ liệu trong libraries, bạn có thể khai báo kiểu librảíe trong file Global.asa.
Cú pháp
Mã:
<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->

Parameter Description
File Đặc tả địa chỉ và đường dần đến kiểu library.
Kế theo tham số file hoặc tham số uuid phải luôn có
Uuid Các đặc tả xác định đơn nhất của kiểu library.
Kế theo tham số file hoặc tham số uuid phải luôn có
Version Lựa chọn. Sử dụng để lựa chọn version. Nếu yêu có version không tìm thấy, thì version mới nhất được sử dụng.
Lcid Lựa chọn. Vị trí xác định để sử dụng đối với kiểu library

5. Các giá trị lỗi truy cập

Server có thể trả về một trong các lối sau:
Error Code Description
ASP 0222 Thiếu đặc tả thư viện
ASP 0223 Kiểu thư viện không tìm thấy.
ASP 0224 Kiểu thư viện không thể nạp được
ASP 0225 Kiểu thư viện không thể nối kết
Chú ý: thẻ METADATA có thể đặt ở vị trí bất kỳ trong file Global.asa (cả bên trong và bên ngoài thẻ <script>). Dẫu vậy, nó nên đặt thẻ METADATA gần đầu file Global.asa.

6. Sự hạn chế

Các hạn chế chứa đựng trong file Global.asa là gì:
• Ban không thể hiển thị văn bản như là bằng lệnh Write trong file Global.asa . File này không thể hiện thị các thông tin.
• Bạn có thể chỉ sử dụng Server và các đối tượng Application trong thủ tục Application_OnStart và Application_OnEnd. Trong thủ tục Session_OnEnd, bạn có thể sử dụng các đối tượng Server, Application, và Session. Trong thủ tục Session_OnStart bạn có thể sử dụng bất cứ đối tượng tự xây dựng.

7. Sử dụng các thủ tục con như thể nào?

Global.asa thường được sử dụng để khởi tạo các biến.
Ví dụ dưới đây chỉ ra việc dò tìm chính xác thời gian ghét thăm một Website lần đầu tiên như thế nào. Thời gian này được cất trong biến Session có tên là "started", và giá trị của biến "started" có thể được truy cập ở bất cứ trang ASP nào trong ứng dụng:

Mã:
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>


Global.asa cũng có thể được sử dụng để điều khiển chuyển hướng trang truy cập:
Ví dụ dưới đây chỉ ra cách chuyển đến một trang mới như thế nào mỗi khi ghé thăm một trang mới, trong trường hợp này trang được gọi là "newpage.asp":

HTML:
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>


Và có thể chứa các hàm trong file Global.asa
Trong ví dụ dưới đây thủ tục Application_OnStart thực hiện khi mà Webserver khởi động. Tiếp theo thủ tục Application_OnStart gọi một thủ tục khác có tên là “getcustomers”. Thủ tục “getcustomers” mở CSDL và mở biến bản ghi từ bảng “customers”. Bản ghi được gán cho một dãy, và nó sẽ được truy cập trong bất kỳ file ASP nào mà không cần truy vấn vào CSDL:

Mã:
<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>


8. Ví dụ một file Global.asa

Trong ví dụ dưới đây chúng ta sẽ tạo ra 1 file Global.asa để đếm số khách viếng thăm:
• Application_OnStart đặt định nghĩa một biến Application là “vistors=0” khi server khởi động
• Session_OnStart tăng visitors lên 1 mỗi khi có khách mới đến thăm
• Session_OnEnd bớt visitors đi một khi mỗi lần nó được gọi thực hiện
Nội dung file Global.asa:


Mã:
<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 trong 1 file ASP:

HTML:
<html>
<head>
</head>
<body>

There are <%response.write(Application("visitors"))%>
online now!

</body>
</html>
 
×
Quay lại
Top