2019/3/26 12:38:44
Session 對象
可(kě)以使用(yòng) Session 對象存儲特定用(yòng)戶會(huì)話(huà)所需的(de)信息。這樣,當用(yòng)戶在應用(yòng)程序的(de) Web 頁之間跳轉時,存儲在 Session 對象中的(de)變量将不會(huì)丢失,而是在整個(gè)用(yòng)戶會(huì)話(huà)中一直存在下去。
當用(yòng)戶請求來自應用(yòng)程序的(de) Web 頁時,如(rú)果該用(yòng)戶還沒有(yǒu)會(huì)話(huà),則 Web 服務器(qì)将自動創建一個(gè) Session 對象。當會(huì)話(huà)過期或被放(fàng)棄後,服務器(qì)将終止該會(huì)話(huà)。
Session 對象最常見的(de)一個(gè)用(yòng)法就是存儲用(yòng)戶的(de)首選項。例如(rú),如(rú)果用(yòng)戶指明(míng)不喜歡查看圖形,就可(kě)以将該信息存儲在 Session 對象中。有(yǒu)關使用(yòng) Session 對象的(de)詳細信息,請參閱“ASP 應用(yòng)程序”部分(fēn)的(de)“管理(lǐ)會(huì)話(huà)”。
注意 會(huì)話(huà)狀态僅在支持 cookie 的(de)浏覽器(qì)中保留。
語法
Session.collection|property|method
集合
Contents 包含已用(yòng)腳本命令添加到(dào)會(huì)話(huà)中的(de)項目。
StaticObjects 包含通過 <OBJECT> 标記創建的(de)并給定了會(huì)話(huà)作用(yòng)域的(de)對象。
屬性
CodePage 将用(yòng)于符号映射的(de)代碼頁。
LCID 現場(chǎng)标識。
SessionID 返回用(yòng)戶的(de)會(huì)話(huà)驗證。
Timeout 應用(yòng)程序會(huì)話(huà)狀态的(de)超時時限,以分(fēn)鍾爲單位。
方法
Abandon 該方法破壞 Session 對象并釋放(fàng)其資源。
事件(jiàn)
global.asa 文(wén)件(jiàn)中聲明(míng)下列事件(jiàn)的(de)腳本。
Session_OnEnd
Session_OnStart
有(yǒu)關以上(shàng)事件(jiàn)及 global.asa 文(wén)件(jiàn)的(de)詳細信息, 請參閱 Global.asa 參考.
注釋
您可(kě)以在 Session 對象中存儲值。存儲在 Session 對象中的(de)信息在會(huì)話(huà)及會(huì)話(huà)作用(yòng)域内有(yǒu)效。下列腳本演示兩種類型的(de)變量的(de)存儲方式。
<%
Session("username") = "Janine"
Session("age") = 24
%>
但(dàn)是,如(rú)果您将對象存儲在 Session對象中,而且您使用(yòng) VBScript 作爲主腳本語言。則必須使用(yòng)關鍵字 Set。如(rú)下列腳本所示。
<% Set Session("Obj1") = Server.CreateObject("MyComponent.class1") %>
然後,您就可(kě)以在後面的(de) Web 頁上(shàng)調用(yòng) MyComponent.class1 揭示的(de)方法和(hé)屬性,其調用(yòng)方法如(rú)下:
<% Session("Obj1").MyMethod %>
也(yě)可(kě)以通過展開(kāi)該對象的(de)本地(dì)副本并使用(yòng)下列腳本來調用(yòng):
<%
Set MyLocalObj1 = Session("Obj1")
MyLocalObj1.MyObjMethod
%>
創建有(yǒu)會(huì)話(huà)作用(yòng)域的(de)對象的(de)另一種方法是在 global.asa 文(wén)件(jiàn)中使用(yòng) <OBJECT> 标記。
但(dàn)是不能(néng)在 Session 對象中存儲内建對象。例如(rú),下面每一行(xíng)都(dōu)将返回錯誤。
<%
Set Session("var1") = Session
Set Session("var2") = Request
Set Session("var3") = Response
Set Session("var4") = Server
Set Session("var5") = Application
%>
在将對象存儲到(dào) Session 對象之前,必須了解它使用(yòng)的(de)是哪一種線程模型。隻有(yǒu)那些标記爲“Both”的(de)對象才能(néng)存儲在沒有(yǒu)鎖定單線程會(huì)話(huà)的(de) Session 對象中。詳細信息, 請參閱“創建 ASP 組件(jiàn)”中的(de)“選擇線程模型”。
若您将一個(gè)數組存儲在 Session對象中,請不要直接更改存儲在數組中的(de)元素。例如(rú),下列的(de)腳本無法運行(xíng)。
<% Session("StoredArray")(3) = "new value" %>
這是因爲 Session對象是作爲集合被實現的(de)。數組元素 StoredArray(3) 未獲得新的(de)賦值。而此值将包含在 Application 對象集合中,并将覆蓋此位置以前存儲的(de)任何信息。
我們極力建議您在将數組存儲在 Session對象中時,在檢索或改變數組中的(de)對象前獲取數組的(de)一個(gè)副本。在對數組操作時,您應再将數組全部存儲在 Session 對象中,這樣您所做的(de)任何改動将被存儲下來。下列的(de)腳本對此進行(xíng)演示。
---file1.asp---
<%
'Creating and initializing the array
Dim MyArray()
Redim MyArray(5)
MyArray(0) = "hello"
MyArray(1) = "some other string"
'Storing the array in the Session object
Session("StoredArray") = MyArray
Response.Redirect("pagelist.html")
%>
---file2
深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04
咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967