可以使用 Session 對象存儲特定用戶會話所需的信息。這樣,當(dāng)用戶在應(yīng)用程序的 Web 頁之間跳轉(zhuǎn)時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。
當(dāng)用戶請求來自應(yīng)用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務(wù)器將自動創(chuàng)建一個 Session 對象。當(dāng)會話過期或被放棄后,服務(wù)器將終止該會話。
Session 對象最常見的一個用法就是存儲用戶的首選項。例如,如果用戶指明不喜歡查看圖形,就可以將該信息存儲在 Session 對象中。有關(guān)使用 Session 對象的詳細(xì)信息,請參閱“ASP 應(yīng)用程序”部分的“管理會話”。
注意 會話狀態(tài)僅在支持 cookie 的瀏覽器中保留。
Session.collection|property|method
Contents | 包含已用腳本命令添加到會話中的項目。 |
StaticObjects | 包含通過 <OBJECT> 標(biāo)記創(chuàng)建的并給定了會話作用域的對象。 |
CodePage | 將用于符號映射的代碼頁。 |
LCID | 現(xiàn)場標(biāo)識。 |
SessionID | 返回用戶的會話驗證。 |
Timeout | 應(yīng)用程序會話狀態(tài)的超時時限,以分鐘為單位。 |
Abandon | 該方法破壞 Session 對象并釋放其資源。 |
global.asa 文件中聲明下列事件的腳本。
Session_OnEnd |
Session_OnStart |
有關(guān)以上事件及 global.asa 文件的詳細(xì)信息, 請參閱 Global.asa 參考.
您可以在 Session 對象中存儲值。存儲在 Session 對象中的信息在會話及會話作用域內(nèi)有效。下列腳本演示兩種類型的變量的存儲方式。
<%Session("username") = "Janine"Session("age") = 24%>
但是,如果您將對象存儲在 Session對象中,而且您使用 VBScript 作為主腳本語言。則必須使用關(guān)鍵字 Set。如下列腳本所示。
<% Set Session("Obj1") = Server.CreateObject("MyComponent.class1") %>
然后,您就可以在后面的 Web 頁上調(diào)用 MyComponent.class1
揭示的方法和屬性,其調(diào)用方法如下:
<% Session("Obj1").MyMethod %>
也可以通過展開該對象的本地副本并使用下列腳本來調(diào)用:
<%Set MyLocalObj1 = Session("Obj1")MyLocalObj1.MyObjMethod%>
創(chuàng)建有會話作用域的對象的另一種方法是在 global.asa 文件中使用 <OBJECT> 標(biāo)記。
但是不能在 Session 對象中存儲內(nèi)建對象。例如,下面每一行都將返回錯誤。
<%Set Session("var1") = SessionSet Session("var2") = RequestSet Session("var3") = ResponseSet Session("var4") = ServerSet Session("var5") = Application%>
在將對象存儲到 Session 對象之前,必須了解它使用的是哪一種線程模型。只有那些標(biāo)記為“Both”的對象才能存儲在沒有鎖定單線程會話的 Session 對象中。詳細(xì)信息, 請參閱“創(chuàng)建 ASP 組件”中的“選擇線程模型”。
若您將一個數(shù)組存儲在 Session對象中,請不要直接更改存儲在數(shù)組中的元素。例如,下列的腳本無法運(yùn)行。
<% Session("StoredArray")(3) = "new value" %>
這是因為 Session對象是作為集合被實現(xiàn)的。數(shù)組元素 StoredArray(3)
未獲得新的賦值。而此值將包含在 Application 對象集合中,并將覆蓋此位置以前存儲的任何信息。
我們極力建議您在將數(shù)組存儲在 Session對象中時,在檢索或改變數(shù)組中的對象前獲取數(shù)組的一個副本。在對數(shù)組操作時,您應(yīng)再將數(shù)組全部存儲在 Session 對象中,這樣您所做的任何改動將被存儲下來。下列的腳本對此進(jìn)行演示。
---file1.asp---<%'Creating and initializing the arrayDim MyArray()Redim MyArray(5)MyArray(0) = "hello"MyArray(1) = "some other string"'Storing the array in the Session objectSession("StoredArray") = MyArrayResponse.Redirect("file2.asp")%>---file2.asp---<%'Retrieving the array from the Session Object'and modifying its second elementLocalArray = Session("StoredArray")LocalArray(1) = " there"'printing out the string "hello there"Response.Write(LocalArray(0)&LocalArray(1))'Re-storing the array in the Session object'This overwrites the values in StoredArray with the new valuesSession("StoredArray") = LocalArray%>
下列代碼將字符串 MyName
分配給名為 name
的會話變量,并給名為 year
的會話變量指定一個值,而且為 some.Obj
組件的實例指定一個名為 myObj
的變量。
Session("name") = "MyName"Session("year") = 96Set Session("myObj") = Server.CreateObject("someObj")%>