ASP編程入門進階:Application

在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")%>位訪問者。


  上面的程序,你會發現每刷新一次,都會記數累加,如按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")%>位訪問者。

  三、Application.Unlock
  與Lock方法相反,Unlock方法是允許其他用戶修改 Application 對象的屬性。可以看出在上面的例子中,Unlock方法解除對象的鎖定,使得下一個客戶端能夠增加 NumVisits 的值。
  當然需要注意的是:記數要確保服務器不被重啓,因爲所以的訪問是數值是建立在頁面之上的,並未進行保存成文件或保存到數據庫這樣的處理。
  一般當服務器重新啓動就會觸發Application的事件了。
  四、Application_OnEnd
  Application_OnEnd 事件在應用程序退出時於 Session_OnEnd 事件之後發生,當然Application_OnEnd 事件的處理過程也必須寫在 Global.asa 文件之中。
  比如上面的程序中,若服務器關機必然會觸發Application_OnEnd事件,那麼該事件就可以進行數據保存的工作,已使得下次數據的續沿。
  當然Application_OnEnd 事件在應用程序退出時於Session_OnEnd 事件之後發生。

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
.............
Sub Application_OnEnd
.............
End Sub
.............
</SCRIPT>

  五、Application_OnStart
  Application_OnStart 事件在首次創建新的會話( 即 Session_OnStart 事件 )之前發生。當WEB服務器啓動並允許對應用程序所包含的文件進行請求時就觸發Application_OnStart事件。
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
.............
Sub Application_OnStart
.............
End Sub
.............
</SCRIPT>

  所以現在可以將Global.asa內部的代碼可以想象

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
.....................
End Sub
Sub Session_OnStart
.....................
End Sub
Sub Session_OnEnd
.....................
End Sub
Sub Application_OnEnd
.....................
End Sub
</SCRIPT>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章