ASP 会话 对象
会话对象存储有关用户会话的信息或更改设置。
会话对象
当您在计算机上使用应用程序时,您会打开它,进行一些更改,然后关闭它。这很像一个会话。计算机知道你是谁。它知道您何时打开应用程序以及何时关闭应用程序。但是,在互联网上存在一个问题:Web 服务器不知道您是谁以及您在做什么,因为 HTTP 地址不维护状态。
ASP 通过为每个用户创建一个唯一的 cookie 来解决此问题。Cookie 被发送到用户的计算机,并且包含用于识别用户的用户信息。此接口称为会话对象。
会话对象存储有关用户会话的信息或更改设置。
存储在会话对象中的变量保存有关单个用户的信息,并且可供一个应用程序中的所有页面使用。存储在会话变量中的常见信息包括姓名、ID 和首选项。服务器为每个新用户创建一个新的会话对象,并在会话过期时销毁会话对象。
会话何时开始?
会话在以下情况下开始
- 新用户请求 ASP 文件,并且 Global.asa 文件包含 Session_OnStart 过程
- 在会话变量中存储了一个值
- 用户请求 ASP 文件,并且 Global.asa 文件使用
会话何时结束?
如果用户在指定的时间段内未在应用程序中请求或刷新页面,则会话将结束。默认情况下,为 20 分钟。
如果要设置比默认值更短或更长的时间限制,请使用 Timeout 属性。
以下示例将时间限制设置为 5 分钟
<%
Session.Timeout=5
%>
使用 Abandon 方法立即结束会话
<%
Session.Abandon
%>
注意: 会话的主要问题是它们何时应该结束。我们不知道用户的最后一个请求是否是最终请求。因此,我们不知道应该将会话保持“活动”多久。等待一个空闲会话的时间过长会导致服务器上的资源占用,但是如果会话过早删除,则用户必须重新开始,因为服务器已经删除了所有信息。找到合适的时间限制可能很困难!
提示: 只在会话变量中存储少量数据!
存储和检索会话变量
会话对象最重要的功能是您可以在其中存储变量。
以下示例将会话变量 username 设置为“唐老鸭”,将会话变量 age 设置为“50”。
<%
Session("username")="唐老鸭"
Session("age")=50
%>
当值存储在会话变量中时,可以从 ASP 应用程序中的任何页面访问它
欢迎 <%Response.Write(Session("username"))%>
上面的行返回:“欢迎唐老鸭”。
您也可以在会话对象中存储用户首选项,然后访问该首选项以选择要返回给用户的页面。
以下示例指定了如果用户具有较低的屏幕分辨率,则使用页面的纯文本版本
<%If Session("screenres")="low" Then%>
这是页面的纯文本版本
<%Else%>
这是页面的多媒体版本
<%End If%>
删除会话变量
Contents 集合包含所有会话变量。
可以使用 Remove 方法删除会话变量。
以下示例删除会话变量“sale”,如果会话变量“age”的值小于 18
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
要删除会话中的所有变量,请使用 RemoveAll 方法
<%
Session.Contents.RemoveAll()
%>
循环遍历 Contents 集合
Contents 集合包含所有会话变量。您可以循环遍历 Contents 集合,以查看其中存储的内容
<%
Session("username")="唐老鸭"
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("会话变量: " & j)
For i=1 to j
Response.Write(Session.Contents(i) & "<br>")
Next
%>
结果
会话变量: 2
唐老鸭
50
循环遍历 StaticObjects 集合
您可以循环遍历 StaticObjects 集合,以查看存储在会话对象中的所有对象的值
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br>")
Next
%>