application|session|對象 作者: 書生
在上一篇中作者給大家詳細介紹了 ASP 內建對象 Response 的使用方法,在這一篇中作者將繼續給大家介紹另兩個非常實用且重要的 ASP 的內建對象 Application 和 Session。 在 ASP 的內建對象中除了用於發送、接收和處理資料的對象外,還有一些非常實用的代表 Active Server 應用程式和單個使用者資訊的對象。 讓我們先來看看 Application 對象。在同一虛擬目錄及其子目錄下的所有 .asp 檔案構成了 ASP 應用程式。我們非但可以使用 Application 對象,在給定的應用程式的所有使用者之間共用資訊,並在伺服器運行期間持久的儲存資料。而且,Application 對象還有控制訪問應用程式層資料的方法和可用於在應用程式啟動和停止時觸發過程的事件。
下面就讓我們一起來學習 Application 對象。
一、屬性 雖然 A pplication 對 象沒有內建的屬性,但我們可以使用以下句法設定使用者定義的屬性也可稱為集合。
A pplication(" 屬性 / 集合名稱 ")= 值
我們可以使用如下指令碼聲明並建立 Application 對象的屬性。 < % Application("MyVar") = "Hello" Set Application("MyObj") = Server.CreateObject("MyComponent") %> 一旦我們分配了 A pplication 對 象的屬性,它就會持久地存在,直到關閉 W EB 服 務器服務使得 A pplication 停 止。由於儲存在 A pplication 對 象中的數值可以被應用程式的所有使用者讀取,所以 A pplication 對 象的屬性特別適合在應用程式的使用者之間傳遞資訊。
二、方法 Application 對象有兩個方法,它們都是用於處理多個使用者對儲存在 Application 中的資料進行寫入的問題
1 、 L ock 方 法禁止其他客戶修改 A pplication 對 象的屬性。
Lock 方法阻止其他客戶修改儲存在 Application 對象中的變數,以確保在同一時刻僅有一個客戶可修改和存取 Application 變數。如果使用者沒有明確調用 Unlock 方法,則伺服器將在 .asp 檔案結束或逾時後即解除對 Application 對象的鎖定。
讓我們來看看下面這段用 A pplication 來 記錄頁面訪問次數的程式 : < % Dim NumVisitsNumVisits=0 Application.LockApplication("NumVisits") = Application("NumVisits") + 1 Application.Unlock %> 歡迎光臨本網頁,你是本頁的第 < %= Application("NumVisits") %> 位訪客 ! 將以上指令碼儲存在你的 .asp 檔案中,就輕而易舉地給你的頁面添加了一個計數器。
2、和 Lock 方法相反,Unlock 方法允許其他客戶修改 Application 對象的屬性。
在上面的例子中,上述例子中,Unlock 方法解除對象的鎖定,使得下一個用戶端能夠增加 NumVisits 的值。
三、事件
1、Application_OnStart
A pplication_OnStart 事 件在首次建立新的會話 ( 即 S ession_OnStart 事 件 ) 之 前發生。當 W EB 服 務器啟動並允許對應用程式所包含的檔案進行請求時就觸發 A pplication_OnStart 事 件。 A pplication_OnStart 事 件的處理過程必須寫在 G lobal.asa 文 件之中。 Application_OnStart 事件的文法如下 : < SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> Sub Application_OnStart. . . End Sub < /SCRIPT> 2、Application_OnEnd Application_OnEnd 事件在應用程式退出時於 Session_OnEnd 事件之後發生,Application_OnEnd 事件的處理過程也必須寫在 Global.asa 檔案之中。
下面讓我們來看看在使用 Application 對象時必須注意的一些事項。
不能在 A pplication 對 象中儲存 A SP 內 建對象。例如,下面的每一行都返回一個錯誤。 < % Set Application("var1")=Session Set Application("var2")=Request Set Application("var3")=Response Set Application("var4")=Server Set Application("var5")=Application Set Application("var6")=ObjectContext %> 若您將一個數組儲存在 Application 對象中,請不要直接更改儲存在數組中的元素。例如,下列的指令碼無法運行。 < % Application("StoredArray")(3) = "new value" %> 這是因為 A pplication 對 象是作為集合被實現的。數組元素 S toredArray(3) 未 獲得新的賦值。而此值將包含在 A pplication 對 象集合中,並將覆蓋此位置以前儲存的任何資訊。建議您在將數組儲存在 A pplication 對 象中時,在檢索或改變數組中的對象前擷取數組的一個副本。在對數組操作時,您應再將數組全部儲存在 A pplication 對 象中,這樣您所做的任何改動將被儲存下來。下列的指令碼對此進行示範。 ---asp8a.asp--- < % dim MyArray() Redim MyArray(5) MyArray(0)="hello" MyArray(1)="some other string" Application.Lock Application("StoredArray")=MyArray Application.Unlock Response.Redirect "asp8b.asp" %> ---asp8b.asp--- < % LocalArray=Application("StoredArray") LocalArray(1)=" there" Response.Write LocalArray(0)&LocalArray(1) Application.Lock Application("StoredArray")=LocalArray Application.Unlock %> 與 Application 對象具有相近作用的另一個非常實用的 ASP 內建對象就是 Session。我們可以使用 Session Object Storage Service特定的使用者會話所需的資訊。當使用者在應用程式的頁之間跳轉時,儲存在 Session 對象中的變數不會清除,而使用者在應用程式中訪問頁面時,這些變數始終存在。當使用者請求來自應用程式的 Web 頁時,如果該使用者還沒有會話,則 Web 服務器將自動建立一個 Session 對象。當會話到期或被放棄後,伺服器將終止該會話。 通過向客戶程式發送唯一的 Cookie 可以管理伺服器上的 Session 對象。當使用者第一次請求 ASP 應用程式中的某個頁面時,ASP 要檢查 HTTP 頭資訊,查看是否有在報文中有名為 ASPSESSIONID 的 Cookie 發送過來,如果有,則伺服器會啟動新的會話,並為該會話產生一個全域唯一的值,在把這個值作為新 ASPSESSIONID Cookie 的值發送給用戶端,正是使用這種 Cookie,可以訪問儲存在伺服器上的屬於客戶程式的資訊。Session 對象最常見的作用就是儲存使用者的喜好設定。例如,如果使用者指明不喜歡查看圖形,就可以將該資訊儲存在 Session 對象中。另外其還經常被用在鑒別客戶身份的程式中。要注意的是,工作階段狀態僅在支援 cookie 的瀏覽器中保留,如果客戶關閉了 Cookie 選項,Session 也就不能發揮作用了。
一、屬性
1、SessionID
SessionID 屬性返回使用者的會話標識。在建立會話時,伺服器會為每一個會話產生一個單獨的標識。會話標識以長整形資料類型返回。在很多情況下 SessionID 可以用於 WEB 頁面註冊統計。
2、TimeOut Timeout 屬性以分鐘為單位為該應用程式的 Session 對象指定逾時時限。如果用