您好,登錄后才能下訂單哦!
小編給大家分享一下ASP中Session對象有哪些方法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
在ASP中,有兩個內(nèi)部對象可以進行一些信息存儲,它們是 Application 對象和 Session 對象,其中 Application 對象是對于整個應(yīng)用程序期間而言的,它對于所有訪問網(wǎng)站的用戶來講是共享的,而 Session 是對于會話期間而言的,它僅對與當(dāng)前用戶存在。
Session對象簡介
當(dāng)您在計算機上操作某個應(yīng)用程序時,您打開它,做些更改,然后關(guān)閉它,就很像一次對話(Session)。計算機知道您是誰,它清楚您在何時打開和關(guān)閉應(yīng)用程序。然而,在因特網(wǎng)上問題出現(xiàn)了,由于HTTP地址無法保持狀態(tài),Web服務(wù)器并不知道您是誰以及您做了什么。
Session 對象的主要用途 是針對每個訪問網(wǎng)站的用戶來存儲一些信息,例如,當(dāng)用戶登錄后,我們可以在該用戶的 Session 中存儲信息來標(biāo)識當(dāng)前用戶已經(jīng)登錄。
Session 的原理是這樣的,當(dāng)用戶第一次訪問網(wǎng)站時,IIS為這個用戶分配了一個標(biāo)識,這個標(biāo)識是一列很長的隨機字符串,這個隨機字符串叫做SessionID,而后服務(wù)器將其發(fā)送給客戶端時期保存在Cookies中,接下來用戶再訪問服務(wù)器上的其他頁面時,服務(wù)器獲得這個 SessionID,并從內(nèi)存中獲取和這個 SessionID 相關(guān)的數(shù)據(jù),放在 Session對象的集合中。
Contents集合
我們可以在這個集合中存儲當(dāng)前用戶的某些信息,例如下面的代碼展示了如何存儲和讀取數(shù)據(jù):
<% '名字為username的Session集合中存儲了一個“ZhangSan”字符串 Session.Contents("username") = "ZhangSan" Dim UserName '讀取Session中的數(shù)據(jù),可以省略Contents' UserName = Session.Contents("username")和下面一樣 UserName = Session("username") Response.Write("<h3>" & UserName & "</h3>") %>
Session對象有三個方法(Contents.Remove、Contents.RemoveAll、Abandon),用來刪除 Session 集合中的數(shù)據(jù)或放棄當(dāng)前的 Session。
第一個例子(SessionContents.asp)我們將演示如何使用 Remove、RemoveAll方法,代碼如下:
...<h4>當(dāng)前SessionID值為 <%=Session.SessionID%></h4><h4>Session中存儲數(shù)據(jù)</h4><%'利用 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中存儲了多個數(shù)據(jù),如下Session.Contents("username") = "ZhangSan"Session.Contents("password") = "12345678"Session.Contents("date")="2015/08/14"Session.contents("author")="pchmonster"'遍歷 Contents 集合Traversal_E()%><hr><h4>刪除名為username的數(shù)據(jù)</h4><%'刪除 username 數(shù)據(jù)Session.Contents.Remove("username")'重新遍歷 Contents 集合Traversal_P()%><hr><h4>刪除所有的Session數(shù)據(jù)</h4><%'刪除所有的數(shù)據(jù)Session.Contents.RemoveAll() Traversal_E()%>...
上面的代碼運行后顯示如下:
這些代碼中演示了如何遍歷Session.Contents集合的兩種方法,請仔細看看。
第二個例子(SessionAbandon.asp)演示了 Abandon 方法的效果,通過演示,我們看出來 RemoveAll 方法和 Abandon 方法的區(qū)別在于 RemoveAll 僅僅刪除了當(dāng)前的集合,但是客戶還是使用同一個 SessionID(第一個例子中 SessionID 一直保持不變化)。而 Abandon 方法調(diào)用后,在當(dāng)前頁面仍然可以訪問 Session 集合,在關(guān)閉頁面或者刷新頁面后,之前的 Session 會被刪除(本例子中 SessionID 會變化)。
代碼如下:
<%'Abandon的使用后,在當(dāng)前頁面仍可以訪問Session集合,關(guān)閉頁面或刷新后'會使Session被刪除,SessionID也就會改變Session.Abandon()'首先我們要記錄一下SessionID的值,存放到Cookies中Dim numVisits, SID Response.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 '如果是第一次運行該頁面,則記錄當(dāng)前Sessio nID值 Response.Cookies("numVisits") = 1 Response.Cookies("SID") = Session.SessionID%> <h4>您這是第一次訪問該頁面,當(dāng)前頁面的SessionID為</h4> <h3><%=Session.SessionID%></h3><%Else%> <hr> <h4>您這是第<%=numVisits%>次訪問該頁面,當(dāng)前頁面的SessioID為</h4> <h3><%=Session.SessionID%></h3> <h4>您第一次訪問時的SessionID為</h4> <h3><%=Request.Cookies("SID")%></h3><% numVisits = numVisits + 1 Response.Cookies("numVisits") = numVisitsEnd If%>
第一次運行該頁面,會先記錄當(dāng)前的 SessionID 到 Cookies 中,如下圖:
多次刷新該頁面或重新打開后,因為 Abandon 方法,會使 Session 刪除,SessionID 會一直改變,如下圖:
CodePage、SessionID、Timeout 屬性
CodePage 屬性定義了當(dāng)前頁面輸出內(nèi)容的字符集,這里的字符集以數(shù)字表示。例如
936 表示 Chinese Simplified (GB2312) 簡體中文
950 表示 Chinese Traditional (Big5) 繁體中文
65001 表示 Unicode (UTF-8)
特別說明
<%@CODEPAGE="65001"%>作用于所有靜態(tài)的字符串
Response.CodePage, Session.CodePage 作用于所有動態(tài)輸出的字符串
Response.CodePage 作用范圍只在于 a single response
Session.CodePage 的作用范圍卻是在 all responses in a session
SessionID 屬性可以獲得當(dāng)前用戶的 SessionID,有時候在客戶端瀏覽器不支持 Cookies 的情況下,你可以將 SessionID 附加在客戶端的 QueryString 變量中,從而標(biāo)識每一個客戶端。
Timeout 屬性用于設(shè)定客戶的 Session 超時期??蛻魧τ?SessionID 并不是長期占有的,在其一段時間內(nèi)沒有和服務(wù)器端進行任何交互后,服務(wù)器端將放棄該 Session。
下面的代碼(SessionCST.asp)中將演示這個三個屬性的使用方法,代碼如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <%Session.CodePage = 65001'作用于所有動態(tài)輸出的字符串%> <!doctype html> <html> <head> <meta charset="utf-8"> <title>CodePage、SessionID、TimeOut屬性的應(yīng)用</title> </head> <body> <h4>當(dāng)前頁面使用的CodePage是:</h4> <h3><%=Session.CodePage%></h3> <hr> <h4>當(dāng)前頁面的SessionID是:</h4> <h3><%=Session.SessionID%></h3> <hr> <h4>當(dāng)前頁面Session默認超時時間為:</h4> <h3><%=Session.Timeout%>分鐘</h3> </body> </html>
運行后,效果如下:
看完了這篇文章,相信你對“ASP中Session對象有哪些方法”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。