在Web應用程序中,當一個用戶訪問該應用時,Session類型的變量可以供這個用戶在該Web應用的所有頁面中共享數據;如果另一個用戶也同時訪問該Web應用,他也擁有自己的Session變量,但兩個用戶之間無法通過Session變量共享信息,而Application類型的變量則可以實現站點多個用戶之間在所有頁面中共享信息。可以理解Session是局部變量,而Application則為全局變量。
在同一虛擬目錄及其子目錄下的所有.asp 文件構成了ASP 應用程序。我們非但可以使用Application 對象,在給定的應用程序的所有用戶之間共享信息,並在服務器運行期間持久的保存數據。而且,Application 對像還有控制訪問應用層數據的方法和可用於在應用程序啟動和停止時觸發過程的事件。
一、Application("name")=Value
正如Session("name")=value一樣,Application對像也沒有內置的屬性。當然用戶可以自定義屬性,該屬性也可稱為集合。
一旦分配了Application對象的屬性,它就會持久地存在,直到關閉WEB服務器服務使得Application 停止。由於存儲在Application 對像中的數值可以被應用程序的所有用戶讀取,所以Application 對象的屬性特別適合在應用程序的用戶之間傳遞信息。
<% Application("MyName") = "cnbruce" %> |
二、Application.Lock
Lock方法是禁止其他用戶修改Application對象的屬性,以確保在同一時刻僅有一個客戶可修改和存取Application 變量。如果用戶沒有明確調用Unlock 方法,則服務器將會在.asp 文件結束或超時後即解除對Application 對象的鎖定。最簡單的就是進行頁面記數的例子了。
1,num.asp
<% Application.Lock Application("NumVisits") = Application("NumVisits") + 1 Application.Unlock %> 你是本頁的第<%=Application("NumVisits")%>位訪問者 |
當然,若如果你需要記數的初始值那就該寫個判斷了。
<% if Application("NumVisits")<9999 then Application("NumVisits")=10000 end if Application.Lock Application("NumVisits") = Application("NumVisits") + 1 Application.Unlock %> 你是本頁的第<%=Application("NumVisits")%>位訪問者 |
上面的程序,你會發現每刷新一次,都會記數累加,如按IP值訪問來記數的話,則建立一個Session
2,vnum.asp
<% if session("visitnum")="" then Application.Lock Application("NumVisits") = Application("NumVisits") + 1 Application.Unlock session("visitnum")="visited" end if %> 你是本頁的第<%=Application("NumVisits")%>位訪問者
|