directory search
ASP 基础教程 在自己的 PC 上运行 ASP ASP 基本语法规则 ASP 变量 ASP 子程序 ASP 表单和用户输入 ASP Cookies ASP Session 对象 ASP Application 对象 ASP 引用文件 ASP Global.asa 文件 ASP 使用 CDOSYS 发送电子邮件 ASP 对象 ASP Response 对象 ASP Cookies 集合 ASP Buffer 属性 ASP CacheControl 属性 ASP Charset 属性 ASP ContentType 属性 ASP Expires 属性 ASP ExpiresAbsolute 属性 ASP IsClientConnected 属性 ASP PICS 属性 ASP Status 属性 ASP AddHeader 方法 ASP AppendToLog 方法 ASP BinaryWrite 方法 ASP Clear 方法 ASP End 方法 ASP Flush 方法 ASP Redirect 方法 ASP Write 方法 ASP Request 对象 ASP Cookies 集合 ASP Form 集合 ASP QueryString 集合 ASP ServerVariables 集合 ASP 教程 ASP TotalBytes 属性 ASP BinaryRead 方法 ASP Application 对象 ASP Contents 集合 ASP StaticObjects 集合 ASP Contents.RemoveAll 方法 ASP Lock 和 Unlock 方法 ASP Application OnStart 和 Application OnEnd 事件 ASP Session 对象 ASP Contents 集合 ASP StaticObjects 集合 ASP CodePage 属性 ASP LCID 属性 ASP SessionID 属性 ASP Timeout 属性 ASP Abandon 方法 ASP Contents.Remove 方法 ASP Contents.RemoveAll 方法 ASP Session OnStart 和 Session OnEnd 事件 ASP ScriptTimeout 属性 ASP CreateObject 方法 ASP Execute 方法 ASP Server 对象 ASP GetLastError() 方法 (ASP 3.0) ASP HTMLEncode 方法 ASP MapPath 方法 ASP Transfer 方法 ASP URLEncode 方法 ASP ASPError 对象 ASP ASPError 对象的属性 ASP FileSystemObject 对象 ASP Drives 属性 ASP BuildPath 方法 ASP CopyFile 方法 ASP CopyFolder 方法 ASP CreateFolder 方法 ASP CreateTextFile 方法 ASP DeleteFile 方法 ASP DeleteFolder 方法 ASP DriveExists 方法 ASP FileExists 方法 ASP FolderExists 方法 ASP GetAbsolutePathName 方法 ASP GetBaseName 方法 ASP GetDrive 方法 ASP GetDriveName 方法 ASP GetExtensionName 方法 ASP GetFile 方法 ASP GetFileName 方法 ASP GetFolder 方法 ASP GetParentFolderName 方法 ASP GetSpecialFolder 方法 ASP GetTempName 方法 ASP MoveFile 方法 ASP MoveFolder 方法 ASP OpenTextFile 方法 ASP TextStream 对象 ASP AtEndOfLine 属性 ASP AtEndOfStream 属性 ASP Column 属性 ASP Line 属性 ASP Close 方法 ASP Read 方法 ASP ReadAll 方法 ASP ReadLine 方法 ASP Skip 方法 ASP SkipLine 方法 ASP Write 方法 ASP WriteLine 方法 ASP WriteBlankLines 方法 ASP Drive 对象 ASP AvailableSpace 属性 ASP DriveLetter 属性 ASP DriveType 属性 ASP FileSystem 属性 ASP FreeSpace 属性 ASP IsReady 属性 ASP Path 属性 ASP RootFolder 属性 ASP SerialNumber 属性 ASP ShareName 属性 ASP TotalSize 属性 ASP VolumeName 属性 ASP File 对象 ASP Attributes 属性 ASP DateCreated 属性 ASP DateLastAccessed 属性 ASP DateLastModified 属性 ASP Drive 属性 ASP Name 属性 ASP ParentFolder 属性 ASP Path 属性 ASP ShortName 属性 ASP ShortPath 属性 ASP Size 属性 ASP Type 属性 ASP Copy 方法 ASP Delete 方法 ASP Move 方法 ASP OpenAsTextStream 方法 ASP Folder 对象 ASP Files 集合 ASP SubFolders 集合 ASP Attributes 属性 ASP DateCreated 属性 ASP DateLastAccessed 属性 ASP DateLastModified 属性 ASP Drive 属性 ASP IsRootFolder 属性 ASP Name 属性 ASP ParentFolder 属性 ASP Path 属性 ASP ShortName 属性 ASP ShortPath 属性 ASP Size 属性 ASP Type 属性 ASP Copy 方法 ASP Delete 方法 ASP Move 方法 ASP CreateTextFile 方法 ASP Dictionary 对象 ASP CompareMode 属性 ASP Count 属性 ASP Item 属性 ASP Key 属性 ASP Add 方法 ASP Exists 方法 ASP Items 方法 ASP Keys 方法 ASP Remove 方法 ASP RemoveAll 方法 ASP ADO ASP 组件 ASP AdRotator 组件 ASP Browser Capabilities 组件 ASP Content Linking 组件 ASP Content Rotator 组件 (ASP 3.0) ASP 与 AJAX AJAX 简介 ASP - AJAX 与 ASP AJAX 数据库实例 ASP 实例 ASP 实例 ASP 快速参考
characters

ASP Session 对象



Session 对象用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。


Session 对象

当您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。

ASP 通过为每个用户创建一个唯一的 cookie 来解决这个问题。cookie 被传送至用户的计算机上,它含有可识别用户的信息。这种接口被称作 Session 对象。

Session 对象用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。

存储于 Session 对象中的变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。存储于 session 变量中的公共信息通常是 name、id 和参数。服务器会为每个新的用户创建一个新的 Session,并在 session 失效时撤销掉这个 Session 对象。


Session 何时开始?

Session 开始于:

  • 某个新用户请求了一个 ASP 文件,并且 Global.asa 文件引用了 Session_OnStart 子程序
  • 某个值存储在 Session 变量中
  • 某个用户请求了一个 ASP 文件,并且 Global.asa 使用 <object> 标签通过 session 的 scope 来实例化某个对象

Session 何时结束?

如果用户没有在规定的时间内在应用程序中请求或者刷新页面,session 就会结束。默认值为 20 分钟。

如果您想要将超时的时间间隔设置为比默认值更短或更长,可以使用 Timeout 属性。

下面的实例设置了一个 5 分钟的超时时间间隔:

<%
Session.Timeout=5
%>

要立即结束 session,请使用 Abandon 方法:

<%
Session.Abandon
%>

注释:使用 session 时主要的问题是它们该在何时结束。我们不会知道用户最近的请求是否是最后的请求。因此我们不清楚该让 session "存活"多久。为某个空闲的 session 等待太久会耗尽服务器的资源。然而如果 session 被过早地删除,用户就不得不一遍又一遍地重新开始,这是因为服务器已经删除了所有的信息。寻找合适的超时间隔时间是很困难的!

Tip提示:在 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.Count
Response.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
%>

Previous article: Next article: