ASP教程:简单学习掌握ASP Session 对象
浏览:2511 类型:程序语言 发布人:Mykame 发布日期:2010/6/27 23:28:17
Session对象用于存储用户的信息。存储于session对象中的变量握有单一用户的信息,并且对于应用程序中的所有页面都是可用的。
Session 对象
当你操作某个应用程序时,你打开它,做些改变,然后将它关闭。这很像一次对话(Session)。计算机知道你是谁。它清楚你在何时打开和关闭应用程序。但是在因特网上有一个问题:由于HTTP地址无法存留状态,web服务器并不知道你是谁以及你做什么。
ASP通过为每位用户创建一个唯一的cookie的方式解决了这个问题。cookie被传送至客户端,它含有可识别用户的信息。这种接口被称作Session对象。
Session对象用于存储关于用户的信息,或者为一个用户session更改设置。存储于session对象中的变量握有单一用户的信息,并且对于应用程序中的所有页面都是可用的。存储于session对象中的信息通常是名称、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被过早地删除,那么用户就不得不一遍又一遍地重新开始,这是因为服务器已经删除了所有的信息。寻找合适的超时间隔时间是很困难的。
提示:如果你正在使用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
%>
上一篇:ASP基础教程之ASP程序对Cookie的处理 下一篇:ASP教程:简单学习掌握ASP Application 对象
其它相关文章
您没有ASPEncodeDLL.AspCoding 对象的操作权限或该对象不存在,请联系服务器管理员 解决方法
sql server “不允许保存更改,您所做的更改要求删除并重新创建以下表”错误的解决办法
WIN2003 IIS6 Request 对象 错误 'ASP 0104 : 80004005' 不允许操作|IIS6取消限制上传超200KB文件方法