ASP Session

2018-02-11 17:45 更新

ASP Session 對象


Session 對象是用于存儲關(guān)于用戶會話(session)的信息,或者更改用戶會話(session)的設(shè)置。


Session 對象

當(dāng)您在計算機(jī)上操作某個應(yīng)用程序時,您打開應(yīng)用程序,進(jìn)行一些更改操作,然后關(guān)閉應(yīng)用程序。這就像是一次對話(Session)。計算機(jī)知道您是誰。它清楚您在何時打開和關(guān)閉應(yīng)用程序。但是,在因特網(wǎng)上就會出現(xiàn)這樣一個問題:由于 HTTP 地址無法保持狀態(tài),Web 服務(wù)器并不知道您是誰以及您做了什么。

而ASP 通過為每個用戶創(chuàng)建一個唯一的 cookie 來解決這個問題。cookie 被傳送至用戶的計算機(jī)上,它含有可識別用戶的信息。這種接口被稱作 Session 對象。

Session 對象用于存儲關(guān)于用戶會話(session)的信息,或者更改用戶會話(session)的設(shè)置。

存儲于 Session 對象中的變量存儲單一用戶的信息,并且對于應(yīng)用程序中的所有頁面都是可用的。存儲于 session 變量中的公共信息通常是 name、id 和參數(shù)。服務(wù)器會為每個新的用戶創(chuàng)建一個新的 Session,并在 session 失效時撤銷掉這個 Session 對象。


Session 什么時候開始?

Session 開始于:

  • 某個新用戶請求了一個 ASP 文件,并且 Global.asa 文件引用了 Session_OnStart 子程序
  • 某個值存儲在 Session 變量中
  • 某個用戶請求了一個 ASP 文件,并且 Global.asa 使用 <object> 標(biāo)簽通過 session 的 scope 來實(shí)例化某個對象

Session 什么時候結(jié)束?

如果用戶沒有在規(guī)定的時間內(nèi)在應(yīng)用程序中請求或者刷新頁面,session 就會結(jié)束。默認(rèn)值為 20 分鐘。

如果您想要將超時的時間間隔設(shè)置為比默認(rèn)值更短或更長,您可以使用 Timeout 屬性。

下面的實(shí)例設(shè)置了一個 5 分鐘的超時時間間隔,代碼如下:

<%
Session.Timeout=5
%>

如果您需要立即結(jié)束 session,請使用 Abandon 方法:

<%
Session.Abandon
%>

注釋:使用 session 時主要的問題是它們該在何時結(jié)束。我們不會知道用戶最近的請求是否是最后的請求。因此我們不清楚該讓 session "存活"多久。為某個空閑的 session 等待太久會耗盡服務(wù)器的資源。然而如果 session 被過早地刪除,用戶就不得不一遍又一遍地重新開始,這是因為服務(wù)器已經(jīng)刪除了所有的信息。尋找合適的超時間隔時間是很困難的!

Tip提示:在 session 變量中僅存儲少量的數(shù)據(jù)!


存儲和取回 Session 變量

Session 對象最大的優(yōu)點(diǎn)是可在其中存儲變量,以供后續(xù)的網(wǎng)頁讀取,其應(yīng)用范圍是很廣的。

下面的實(shí)例把 "Donald Duck" 賦值給名為 username 的 Session 變量,并把 "50" 賦值給名為 age 的 Session 變量:

<%
Session("username")="Donald Duck"
Session("age")=50
%>

當(dāng)值被存儲在 session 變量中,它就能被 ASP 應(yīng)用程序中的任何頁面使用:

Welcome <%Response.Write(Session("username"))%>

上面這行代碼返回的結(jié)果是: "Welcome Donald Duck"。

您也可以在 Session 對象中存儲用戶參數(shù),然后通過訪問這些參數(shù)來決定向用戶返回什么頁面。

下面的實(shí)例規(guī)定,假如用戶使用低顯示器分辨率,則返回純文本版本的頁面:

<%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 變量。

在下面的實(shí)例中,如果 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")=50

dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>

結(jié)果如下:

username
age

如果您不知道 Contents 集合中的項目數(shù)量,您可以使用 Count 屬性:

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
Response.Write(Session.Contents(i) & "<br>")
Next
%>

結(jié)果如下:

Session variables: 2
Donald Duck
50


遍歷 StaticObjects 集合

您可以通過遍歷 StaticObjects 集合,來查看存儲在 Session 對象中的所有對象的值,代碼如下:

<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號