首頁 > 後端開發 > C#.Net教程 > 關於ASP中session的詳細介紹

關於ASP中session的詳細介紹

Y2J
發布: 2017-05-18 11:42:21
原創
2124 人瀏覽過

Session 物件用於儲存使用者的資訊。儲存於 session 物件中的變數持有單一使用者的信息,並且對於一個應用程式中的所有頁面都是可用的。

Session 物件

當您操作某個應用程式時,您會開啟它,做些改變,然後將它關閉。這很像對話(Session)。計算機知道您是誰。它清楚您在何時打開和關閉應用程式。但是在網際網路上有一個問題:由於 HTTP 位址無法存留狀態,web 伺服器並不知道您是誰以及您做了什麼。

ASP 透過為每位使用者建立一個唯一的 cookie 的方式解決了這個問題。 cookie 傳送至用戶端,它含有可辨識使用者的資訊。這種介面被稱為 Session 物件。

Session 物件用於儲存關於使用者的信息,或為一個使用者的 session 更改設定。儲存於 session 物件中的變數存有單一使用者的信息,並且對於應用程式中的所有頁面都是可用的。儲存於 session 物件中的資訊通常是 name、id 以及參數。伺服器會為每個新的使用者建立一個新的 Session,並在 session 到期時撤銷掉這個 Session 物件。

Session 何時開始?

Session 開始於:

    *當某個新使用者要求了一個ASP 文件,並且Global.asa 文件引用了Session_OnStart 子程式時;

    *當某個值儲存在Session 變數中;

    *當某個使用者請求了一個ASP 文件,並且Global.asa 使用 標籤透過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")=50
dim i
For Each i in Session.Contents
  Response.Write(i & "<br />")
Next
%>
登入後複製

结果:

username
age
登入後複製

如果需要了解 contents 集合中的项目数量,可使用 count 属性:

<%
dim i
dim j
j=Session.Contents.CountResponse.Write("Session variables: " & j)
For i=1 to j
  Response.Write(Session.Contents(i) & "<br />")
Next
%>
登入後複製

结果:

Session variables: 2
Donald Duck
50
登入後複製

遍历 StaticObjects 集合

可通过循环 StaticObjects 集合,来查看存储在 session 对象中所有对象的值:

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br />")
Next
%>
登入後複製

【相关推荐】

1.  ASP免费视频教程

2. 教你解决ASP session丢失的方法

3. 介绍ASP中Session对象的三种方法

4. 详解ASP中Session的使用技巧

5. ASP session简单示例

以上是關於ASP中session的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板