介紹ASP中Session對象的三種方法

來源:互聯網
上載者:User
在ASP中,有兩個內部對象可以進行一些資訊儲存,它們是 Application 對象和 Session 對象,其中 Application 對象是對於整個應用程式期間而言的,它對於所有訪問網站的使用者來講是共用的,而 Session 是對於會話期間而言的,它僅對與目前使用者存在。

Session對象簡介

當您在電腦上操作某個應用程式時,您開啟它,做些更改,然後關閉它,就很像一次對話(Session)。電腦知道您是誰,它清楚您在何時開啟和關閉應用程式。然而,在網際網路上問題出現了,由於HTTP地址無法保持狀態,Web伺服器並不知道您是誰以及您做了什麼。

Session 對象的主要用途 是針對每個訪問網站的使用者來儲存一些資訊,例如,當使用者登入後,我們可以在該使用者的 Session 中儲存資訊來標識目前使用者已經登入。

Session 的原理是這樣的,當使用者第一次訪問網站時,IIS為這個使用者指派了一個標識,這個標識是一列很長的隨機字串,這個隨機字串叫做SessionID,而後伺服器將其發送給用戶端時期儲存在Cookies中,接下來使用者再訪問伺服器上的其他頁面時,伺服器獲得這個 SessionID,並從記憶體中擷取和這個 SessionID 相關的資料,放在 Session對象的集合中。

Contents集合

我們可以在這個集合中儲存目前使用者的某些資訊,例如下面的代碼展示了如何儲存和讀取資料:

<%'名字為username的Session集合中儲存了一個“ZhangSan”字串Session.Contents("username") = "ZhangSan"Dim UserName'讀取Session中的資料,可以省略Contents'UserName = Session.Contents("username")和下面一樣UserName = Session("username")Response.Write("<h2>" & UserName & "</h2>")%>

Session對象有三個方法(Contents.Remove、Contents.RemoveAll、Abandon),用來刪除 Session 集合中的資料或放棄當前的 Session。

第一個例子(SessionContents.asp)我們將示範如何使用 Remove、RemoveAll方法,代碼如下:

...<h3>當前SessionID值為 <%=Session.SessionID%></h3><h3>Session中儲存資料</h3><%'利用 Contents.Count 遍曆 Session 的過程Sub Traversal_P()   Dim i  For i = 1 To Session.Contents.Count    Response.Write("Session(""" & Session.Contents.key(i) & """) = " & Session.Contents(i))    Response.Write("<br>")  NextEnd Sub'For Each 遍曆 Session.Contents 集合 Sub Traversal_E()  Dim x  For Each x In Session.Contents     Response.Write("Session(""" & x & """) = " & Session(x))    Response.Write("<br>")  NextEnd Sub'Session.Contents中儲存了多個資料,如下Session.Contents("username") = "ZhangSan"Session.Contents("password") = "12345678"Session.Contents("date")="2015/08/14"Session.contents("author")="pchmonster"'遍曆 Contents 集合Traversal_E()%><hr><h3>刪除名為username的資料</h3><%'刪除 username 資料Session.Contents.Remove("username")'重新遍曆 Contents 集合Traversal_P()%><hr><h3>刪除所有的Session資料</h3><%'刪除所有的資料Session.Contents.RemoveAll()Traversal_E()%>...

上面的代碼運行後顯示如下:

這些代碼中示範了如何遍曆Session.Contents集合的兩種方法,請仔細看看。

第二個例子(SessionAbandon.asp)示範了 Abandon 方法的效果,通過示範,我們看出來 RemoveAll 方法和 Abandon 方法的區別在於 RemoveAll 僅僅刪除了當前的集合,但是客戶還是使用同一個 SessionID(第一個例子中 SessionID 一直保持不變化)。而 Abandon 方法調用後,在當前頁面仍然可以訪問 Session 集合,在關閉頁面或者重新整理頁面後,之前的 Session 會被刪除(本例子中 SessionID 會變化)。

代碼如下:

<%'Abandon的使用後,在當前頁面仍可以訪問Session集合,關閉頁面或重新整理後'會使Session被刪除,SessionID也就會改變Session.Abandon()'首先我們要記錄一下SessionID的值,存放到Cookies中Dim numVisits, SIDResponse.Cookies("numVisits").Expires = DateAdd("d", 10, Now)Response.Cookies("SID").Expires = DateAdd("d", 10, Now)SID = Request.Cookies("SID")numVisits = Request.Cookies("numVisits")If numVisits = "" or SID = "" Then  '如果是第一次運行該頁面,則記錄當前Sessio nID值  Response.Cookies("numVisits") = 1  Response.Cookies("SID") = Session.SessionID%>  <h3>您這是第一次訪問該頁面,當前頁面的SessionID為</h3>  <h2><%=Session.SessionID%></h2><%Else%>  <hr>  <h3>您這是第<%=numVisits%>次訪問該頁面,當前頁面的SessioID為</h3>  <h2><%=Session.SessionID%></h2>  <h3>您第一次訪問時的SessionID為</h3>  <h2><%=Request.Cookies("SID")%></h2><%  numVisits = numVisits + 1  Response.Cookies("numVisits") = numVisitsEnd If%>

第一次運行該頁面,會先記錄當前的 SessionID 到 Cookies 中,如:

多次重新整理該頁面或重新開啟後,因為 Abandon 方法,會使 Session 刪除,SessionID 會一直改變,如:

CodePage、SessionID、Timeout 屬性

CodePage 屬性定義了當前頁面輸出內容的字元集,這裡的字元集以數字表示。例如

936 表示 Chinese Simplified (GB2312) 簡體中文

950 表示 Chinese Traditional (Big5) 繁體中文

65001 表示 Unicode (UTF-8)

特別說明

<%@CODEPAGE="65001"%>作用於所有靜態字串
Response.CodePage, Session.CodePage 作用於所有動態輸出的字串
Response.CodePage 作用範圍只在於 a single response
Session.CodePage 的作用範圍卻是在 all responses in a session

SessionID 屬性可以獲得目前使用者的 SessionID,有時候在用戶端瀏覽器不支援 Cookies 的情況下,你可以將 SessionID 附加在用戶端的 QueryString 變數中,從而標識每一個用戶端。

Timeout 屬性用於設定客戶的 Session 逾時期。客戶對於 SessionID 並不是長期佔有的,在其一段時間內沒有和伺服器端進行任何互動後,伺服器端將放棄該 Session。

下面的代碼(SessionCST.asp)中將示範這個三個屬性的使用方法,代碼如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%><%Session.CodePage = 65001'作用於所有動態輸出的字串%><!doctype html><html><head><meta charset="utf-8"><title>CodePage、SessionID、TimeOut屬性的應用</title></head><body><h3>當前頁面使用的CodePage是:</h3><h2><%=Session.CodePage%></h2><hr><h3>當前頁面的SessionID是:</h3><h2><%=Session.SessionID%></h2><hr><h3>當前頁面Session預設逾時時間為:</h3><h2><%=Session.Timeout%>分鐘</h2></body></html>

運行後,效果如下:

【相關推薦】

1. ASP免費視頻教程

2. 詳解ASP中Session的提示

3. ASP session簡單樣本

4. 關於ASP中session的詳細介紹

5. 教你解決ASP session丟失的方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.