在一起協同工作以完成某項任務的一組ASP文件稱為一個應用程序。Application 對象用於把這些文件捆綁在一起。
Application 對象用於在整個應用程序生存期間保存信息。
Application 對象用於存儲和訪問來自任何頁面的變量,類似於 Session 對象。不同之處在於,所有用戶分享一個 Application 對象,而 Session 對象和用戶的關系是一一對應的。
Application 對象沒有屬性。
Application 對象的原理是這樣的,在每次應用程序啟動(即 IIS 的啟動)時,會在內存中請求一部分空間來保存數據,這個數據對於訪問網站的所有用戶來說是共享的,當在 IIS 中停止站點或者服務器重啟時,Application 對象所存儲的信息將丟失。
Application 對象的方法和集合
與 Session 對象類似,Application 對象也有 Contents 集合,下面的例子演示了如何設定和讀取數據:
<% Application.Contents("WebSite") = "http://pchmonster.cnblogs.com" Dim WebSite WebSite = Application("WebSite") Response.Write(WebSite) %>
Application 對象也有 Remove 和 RemoveAll 兩個方法,其使用方法和 Session 對象相應方法類似,這里不再詳細描述了。
Applicaton 對象另外一對方法是 Lock 和 UnLock 方法。
Lock 方法阻止其他用戶修改 Application 對象中的變量(用來確保同一時間只有一位用戶可以修改 Application 對象變量)。
Unlock 方法使其他用戶能夠修改存儲在 Application 對象中的變量(在它被使用 Lock 方法鎖定之后)
下面的例子,Lock 方法可以防止一個以上用戶訪問變量 Visits,用 Unlock 方法來對已鎖定的對象進行解鎖,這樣下一個用戶就可以增加變量 Visits 的值。
<% Application.Lock() Application("Visits") = Application("Visits") + 1 Application.UnLock() %> <h3>This page has been visited <%=Application("Visits")%> times.</h3>
Application 小案例
在 ASP 剛問世時候,有很多使用 ASP 制作的聊天室,它的原理就是利用 Application 集合是訪問站點所有用戶共享的特點,將所有用戶所發表的聊天句都存儲在 Application 中。
當然這樣的方法需要占用比較大的服務器內存資源,因此已經很少在使用了。
本例代碼如下(ChatRoom.asp):
<% If UCase(Trim(Request.ServerVariables("REQUEST_METHOD"))) = "POST" Then Dim sCurrentWord sCurrentWord = Trim(Request.Form("word")) Application.Lock() Application("chatroom") = Application("chatroom") & "<br>" & Session.SessionID & "->" & sCurrentWord Application.UnLock() End If %> <h3>以下是聊天室的內容:</h3> <p><%=Application("chatroom")%></p> <hr> <form method="post" action=""> 請輸入要說的話:<input name="Word" type="text"/> <input type="submit" value="發送"/> </form>
運行后,輸入密碼登錄,如下圖:
輸入你要說的話,並按“發送”按鈕發送出去。利用多個終端登錄該頁面,進行聊天。