Session 對象用於儲存使用者的資訊。儲存於 session 對象中的變數持有單一使用者的資訊,並且對於一個應用程式中的所有頁面都是可用的。
Session 對象
當您操作某個應用程式時,您開啟它,做些改變,然後將它關閉。這很像一次對話(Session)。電腦知道您是誰。它清楚您在何時開啟和關閉應用程式。但是在網際網路上有一個問題:由於 HTTP 地址無法存留狀態,網頁伺服器並不知道您是誰以及您做了什麼。
ASP 通過為每位使用者建立一個唯一的 cookie 的方式解決了這個問題。cookie 被傳送至用戶端,它含有可識別使用者的資訊。這種介面被稱作 Session 對象。
Session 對象用於儲存關於使用者的資訊,或者為一個使用者的 session 更改設定。儲存於 session 對象中的變數存有單一使用者的資訊,並且對於應用程式中的所有頁面都是可用的。儲存於 session 對象中的資訊通常是 name、id 以及參數。伺服器會為每個新的使用者建立一個新的 Session,並在 session 到期時撤銷掉這個 Session 對象。
Session 何時開始?
Session 開始於:
*當某個新使用者請求了一個 ASP 檔案,並且 Global.asa 檔案引用了 Session_OnStart 子程式時;
*當某個值儲存在 Session 變數中時;
*當某個使用者請求了一個 ASP 檔案,並且 Global.asa 使用 <object> 標籤通過 session 的 scope 來例示某個對象時;
Session 何時結束?
假如使用者沒有在規定的時間內在應用程式中請求或者重新整理頁面,session 就會結束。預設值為 20 分鐘。
如果您希望將逾時的時間間隔設定得更長或更短,可以設定 Timeout 屬性。
下面的例子設定了 5 分鐘的逾時時間間隔:
<%Session.Timeout=5%>
要立即結束 session,可使用 Abandon 方法:
<%Session.Abandon%>
注意:使用 session 時主要的問題是它們該在何時結束。我們不會知道使用者最近的請求是否是最後的請求。因此我們不清楚該讓 session“ 存活”多久。為某個閒置 session 等待太久會耗盡伺服器的資源。然而假如 session 被過早地刪除,那麼使用者就不得不一遍又一遍地重新開始,這是因為伺服器已經刪除了所有的資訊。尋找合適的逾時間隔時間是很困難的。
提示:如果您正在使用 session 變數,請不要在其中儲存大量的資料。
儲存和取回 session 變數
Session 對象最大的優點是可在其中儲存變數,以供後續的網頁讀取,其應用範圍是很廣的。
下面的例子把 "Donald Duck" 賦值給名為 username 的 session 變數,並把 "50" 賦值給名為 age 的 session 變數:
<%Session("username")="Donald Duck"Session("age")=50%>
一旦值被存入 session 變數,它就能被 ASP 應用程式中的任何頁面使用:
Welcome <%Response.Write(Session("username"))%>
上面這行程式返回的結果是: "Welcome Donald Duck"。
也可以在 session 對象中儲存使用者參數,然後通過訪問這些參數來決定向使用者返回什麼頁面。
下面的例子規定,假如使用者使用低顯示器解析度,則返回純文字版本的頁面:
<%If Session("screenres")="low" Then%> This is the text version of the page<%Else%> This is the multimedia version of the page<%End If%>
移除 session 變數
contents 集合包含所有的 session 變數。
可通過 remove 方法來移除 session 變數。
在下面的例子中,假如 session 變數 "age" 的值小於 18,則移除 session 變數 "sale":
<%If Session.Contents("age")<18 then Session.Contents.Remove("sale")End If %>
如需移除 session 中的所有變數,請使用 RemoveAll 方法:
<%Session.Contents.RemoveAll()%>
遍曆 contents 集合
contents 集合包含所有的 session 變數。可通過遍曆 contents 集合,來查看其中儲存的變數:
<%Session("username")="Donald Duck"Session("age")=50dim iFor Each i in Session.Contents Response.Write(i & "<br />")Next%>
結果:
usernameage
如果需要瞭解 contents 集合中的項目數量,可使用 count 屬性:
<%dim idim jj=Session.Contents.CountResponse.Write("Session variables: " & j)For i=1 to j Response.Write(Session.Contents(i) & "<br />")Next%>
結果:
Session variables: 2Donald Duck50
遍曆 StaticObjects 集合
可通過迴圈 StaticObjects 集合,來查看儲存在 session 對象中所有對象的值:
<%dim iFor Each i in Session.StaticObjects Response.Write(i & "<br />")Next%>
【相關推薦】
1. ASP免費視頻教程
2. 教你解決ASP session丟失的方法
3. 介紹ASP中Session對象的三種方法
4. 詳解ASP中Session的提示
5. ASP session簡單樣本