Session对象的具体用法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Session对象
可以使用Session对象存储特定用户会话所需的信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,
而是在整个用户会话中一直存在下去。

当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话。

Session对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。有关使用Session对象的详细信息,请参阅“ASP应用程序”部分的“管理会话”。

注意会话状态仅在支持cookie的浏览器中保留。

语法
Session.collection|property|method

集合
Contents包含已用脚本命令添加到会话中的项目。
StaticObjects包含通过标记创建的并给定了会话作用域的对象。


属性
CodePage将用于符号映射的代码页。
LCID现场标识。
SessionID返回用户的会话验证。
Timeout应用程序会话状态的超时时限,以分钟为单位。


方法
Abandon该方法破坏Session对象并释放其资源。


事件
global.asa文件中声明下列事件的脚本。

Session_OnEnd
Session_OnStart


有关以上事件及global.asa文件的详细信息,请参阅Global.asa参考.

注释
您可以在Session对象中存储值。存储在Session对象中的信息在会话及会话作用域内有效。下列脚本演示两种类型的变量的存储方式。

<%
Session("username")="Janine"
Session("age")=24
%>

但是,如果您将对象存储在Session对象中,而且您使用VBScript作为主脚本语言。则必须使用关键字Set。如下列脚本所示。

<%Set Session("Obj1")=Server.CreateObject("MyComponent.class1")%>

然后,您就可以在后面的Web页上调用MyComponent.class1揭示的方法和属性,其调用方法如下:

<%Session("Obj1").MyMethod%>

也可以通过展开该对象的本地副本并使用下列脚本来调用:

<%
Set MyLocalObj1=Session("Obj1")
MyLocalObj1.MyObjMethod
%>

创建有会话作用域的对象的另一种方法是在global.asa文件中使用标记。

但是不能在Session对象中存储内建对象。例如,下面每一行都将返回错误。

<%
SetSession("var1")=Session
SetSession("var2")=Request
SetSession("var3")=Response
SetSession("var4")=Server
SetSession("var5")=Application
%>

在将对象存储到Session对象之前,必须了解它使用的是哪一种线程模型。只有那些标记为“Both”的对象才能存储在没有锁定单线程会话的Session对象中。详细信息,请参阅“创建ASP组件”中的“选择线程模型”。

若您将一个数组存储在Session对象中,请不要直接更改存储在数组中的元素。例如,下列的脚本无法运行。

<%S

ession("StoredArray")(3)="newvalue"%>

这是因为Session对象是作为集合被实现的。数组元素StoredArray(3)未获得新的赋值。而此值将包含在Application对象集合中,并将覆盖此位置以前存储的任何信息。

我们极力建议您在将数组存储在Session对象中时,在检索或改变数组中的对象前获取数组的一个副本。在对数组操作时,您应再将数组全部存储在Session对象中,这样您所做的任何改动将被存储下来。下列的脚本对此进行演示。