会话对象存储有关用户会话的信息,或更改设置。
Session对象
当你与你的计算机上的应用程序时,你打开它,做一些更改,然后关闭它。 这很像一个会话。 计算机知道你是谁。 它知道,当你打开应用程序,当你关闭它。 然而,在互联网上有一个问题:Web服务器不知道你是谁,你做什么,因为HTTP地址不能保持状态。
ASP通过为每个用户创建一个唯一的cookie解决了这个问题。 该cookie被发送到用户的计算机,它包含识别用户的信息。 这个接口被称为Session对象。
Session对象存储有关用户会话的信息,或更改设置。
存储在大约一个单一用户会话对象保持信息的变量,并提供给一个应用程序中的所有页面。 会话变量中存储的公共信息是名称,ID和喜好。 服务器会为每个新用户一个新的Session对象,当会话过期销毁Session对象。
什么时候会话开始?
会话启动时:
- 一个新的用户请求一个ASP文件,并且Global.asa文件包括的Session_OnStart过程
- 的值被存储在会话变量
- 用户请求一个ASP文件,并且Global.asa文件使用<object>标签来实例化与会话范围的对象
什么时候会话结束?
如果用户没有请求或在指定时间内申请刷新页面的会话结束。 默认情况下,这是20分钟。
如果你想设置一个超时间隔比默认的更短或更长,使用Timeout属性。
下面的例子设置为5分钟超时间隔:
<%
Session.Timeout=5
%>
使用Abandon方法立即结束会话:
<%
Session.Abandon
%>
Note:与会议的主要问题是,当他们应该结束。 我们不知道,如果用户的最后一个请求是最后一个与否。 所以,我们不知道我们应该如何长时间保持会话"alive" 。 等待太长时间空闲会话在服务器上使用了资源,但如果会话太快删除用户不得不从头再来,因为服务器已经删除了所有的信息。 找到合适的超时时间间隔是很困难的!
Tip:只有存储在会话变量少量的数据!
存储和检索会话变量
关于Session对象最重要的事情是,你可以在其中存储的变量。
下面的例子将设置会话变量username ,以"Donald Duck"和会话变量age到"50" :
<%
Session("username")="Donald Duck"
Session("age")=50
%>
当值存储在一个会话变量就可以从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%>
删除会话变量
Contents集合包含了所有会话变量。
它能够除去一个会话变量与Remove方法。
下面的示例删除会话变量"sale"如果会话变量的值"age"是低于18:
<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>
要删除会话中的所有变量,使用RemoveAll方法:
<%
Session.Contents.RemoveAll()
%>
遍历目录收藏
Contents集合包含了所有会话变量。 您可以遍历目录的收集,看看有什么存储在它:
<%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
结果:
username
age
如果你不知道的内容集合的项目数,您可以使用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
%>