首頁  >  文章  >  後端開發  >  介紹ASP中Session物件的三種方法

介紹ASP中Session物件的三種方法

Y2J
Y2J原創
2017-05-18 11:36:142082瀏覽

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

Session物件簡介

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

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

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

Contents集合

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

<%
&#39;名字为username的Session集合中存储了一个“ZhangSan”字符串
Session.Contents("username") = "ZhangSan"
Dim UserName
&#39;读取Session中的数据,可以省略Contents&#39;
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><%&#39;利用 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&#39;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&#39;Session.Contents中存储了多个数据,如下Session.Contents("username") = "ZhangSan"Session.Contents("password") = "12345678"Session.Contents("date")="2015/08/14"Session.contents("author")="pchmonster"&#39;遍历 Contents 集合Traversal_E()%><hr><h3>删除名为username的数据</h3><%&#39;删除 username 数据Session.Contents.Remove("username")&#39;重新遍历 Contents 集合Traversal_P()%><hr><h3>删除所有的Session数据</h3><%&#39;删除所有的数据Session.Contents.RemoveAll()
Traversal_E()%>...

上面的程式碼執行後顯示如下:

介紹ASP中Session物件的三種方法

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

第二個範例(SessionAbandon.asp)示範了Abandon 方法的效果,透過演示,我們看出來RemoveAll 方法和Abandon 方法的差異在於RemoveAll 僅僅刪除了目前的集合,但客戶還是使用同一個SessionID(第一個例子中SessionID 一直保持不變化)。而 Abandon 方法呼叫後,在目前頁面仍可存取 Session 集合,在關閉頁面或刷新頁面後,先前的 Session 會被刪除(本範例中 SessionID 會變更)。

程式碼如下:

<%&#39;Abandon的使用后,在当前页面仍可以访问Session集合,关闭页面或刷新后&#39;会使Session被删除,SessionID也就会改变Session.Abandon()&#39;首先我们要记录一下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
  &#39;如果是第一次运行该页面,则记录当前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 中,如下圖:

介紹ASP中Session物件的三種方法

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

介紹ASP中Session物件的三種方法

CodePage、SessionID、Timeout 屬性

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

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

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

#65001 Traditional (Big5) 繁體中文

#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&#39;作用于所有动态输出的字符串%>
<!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>

运行后,效果如下:

介紹ASP中Session物件的三種方法

【相关推荐】

1. ASP免费视频教程

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

3. ASP session简单示例

4. 关于ASP中session的详细介绍

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

以上是介紹ASP中Session物件的三種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn