ASP Session对象
Application对象存储的信息对于连接到该应用程序的所有用户都是全局或者可访问的。但是,有时切需要存储指定给每个用户的值,而不必通过给这些值分配名字指明其属于哪个用户。这就需要用到Session对象。
Session对象可以存储特定的用户会话所需要的信息。当用户在应用程序的页面之间跳转时,存储在Session对象中的变量不会被清除。当用户请求来自Web应用程序的页面时,如果该用户尚未与Web应用程序建立会话,则Web服务器会自动建立一个Session对象。当会话过期或者被放弃后,服务器将终止该会话。
1 Session对象属性
Session对象提供的属性,包括Timeout属性、SessionID属性、LCID属性和CodePage属性,等等。
1.Timeout属性
Session对象的Timeout属性用来设置Session的最长时间间隔,这里所谓的时间间隔是指服务器端从最近一次向Web服务器提出要求到下一次向Web服务器提出要求的时间,以分钟为单位,语法如下:
Session.Timeout = 分钟数
2.SessionID属性
SessionID属性可为每个用户返回一个唯一的ID。此ID由服务器生成,是一个不重复的长整数数字,语法如下:
长整数=Session.SessionID
例如:
<%
Response.Write(Session.SessionID)
%>
服务器会自动生成ID,结果如下:
55702372
3.LCID属性
LCID属性可设置或者返回一个规定位置或者地区的整数。诸如日期、时间以及货币等内容都会根据位置或者地区来显示。
语法格式如下:
Session.LCID = LCID值
4.CodePage属性
由于用户来自世界各地,无法事先编写各种不同的版本,所以ASP的Session对象提供CodePage属性。CodePage属性表示字符串编码及转换的依据。代码页是一个可以包括数
字、标点符号以及其他字母的字符集。对于不同的语言和地区可以使用不同的代码页。例如,ANSI代码页1252用于美国、英语和大多数欧洲语言,代码页932用于日文字,简体中文的代码页为936。
语法格式如下:
Session. CodePage = CodePage值
2 Session对象方法
Session对象允许从用户会话空间删除指定值,并根据需要终止会话。Session对象提供了三种方法:Contents.Remove方法、Contents.RemoveAll方法和Abandon方法。
1.Contents.Remove方法
Contents.Remove方法可从Contents集合中删除一个项目。语法格式如下:
Session.Contents.Remove(name|index)
其中,name表示要删除项目的名称,index表示要删除项目的索引号。例如下面给出的示例:
<%
Session("test1")=("First test")
Session("test2")=("Second test")
Session("test3")=("Third test")
Session.Contents.Remove("test2")
For Each x In Session.Contents
Response.Write(x & "=" & Session.Contents(x) & "<br />")
Next
%>
输出结果如下所示:
test1=First test
test3=Third test
2.Contents.RemoveAll方法
与Contents.Remove方法相似,Contents.RemoveAll方法可从Contents集合中删除全部项目。语法格式如下:
Session.Contents.RemoveAll()
3.Abandon方法
Abandon方法删除所有存储在Session对象中的对象并释放这些资源。如果明确地调用Abandon方法,一旦会话超时,服务器就会删除这些对象,无法再取得其变量值,而且Session_OnEnd事件将一起被激活,语法格式如下:
Session.Abandon
Abandon方法被调用时,将按顺序删除当前的Session对象,不过在当前页中所有脚本命令都处理完后,对象才会被真正删除。这就是说,在调用Abandon方法时,可以在当前页上访问存储在Session对象中的变量,但在随后的Web页面就不行。
3 Session对象事件
Session对象对应两个事件:Session_OnStart、Session_OnEnd。其中Session_OnStart事件对应Session对象的起始事件,每当开始一个新会话,该事件所定义的代码都将被激活;Session_OnEnd事件对应Session对象的结束事件,当会话终止或者失效时,触发该事件。
这两个事件的代码必须放在Global.asa文件中,语法格式如下:
<script language="vbscript" runat="server">
Sub Session_OnStart
…
End Sub
Sub Session_OnEnd
…
End Sub
</script>
4 Session对象集合
Session对象的数据集合有两种,Contents集合、StaticObject数据集合。
1.Contents数据集合
绝大部分的Session对象存放在Contents集合中,当创建一个新的Session对象时,其实就是在Contents集合中添加了一项,例如下面两条语句是等效的:
<%
Session("username") = "test"
ts("username")="test"
%>
Contents数据集合有3个属性:
● Item属性 使用Item属性可以访问或者设置Contents集合中的一个值。Item属性允许通过名字访问和应用集合中的值。
● Count属性 Count属性表示集合中存储的属性数目。
● Key属性 使用Key属性可以按索引出属性的名字。对于Item属性中存储的每个值,在Key属性中都有一个条目,指定了用于存储这个值的名字。
Contents数据集合还提供了Remove方法和RemoveAll方法,由于在3.5.2节中已经讲解过
这两种方法,这里就不在重复。
2.StaticObjects集合
StaticObjects集合包含所有使用HTML<object>标签追加到Application/Session的对象。该对象可用于确定对象特定属性的值,或者用于遍历集合并获得所有对象的全部属性,语法格式如下:
Session.StaticObjects (对象变量名称)
5 Global.asa文件
已经知道Application对象和Session对象的OnStart、OnEnd事件的脚本都必须在Global.asa文件中声明。下面来看看Global.asa是一个什么样的文件,它到底有何作用,又是如何运行的。
首先.asa是文件的后缀名,它是Active Server Application的首字母缩写。Global.asa文件可以管理ASP应用中两个非常苛刻的对象:Application对象、Session对象。
每当一个应用程序或者会话启动或者结束时,ASP触发一个事件。可以通过在一个特殊的文件Global.asa中编写脚本代码来检测和应答这些事件,Global.asa文件位于一个应用程序的根目录中(对于默认的Web网站是\Inerpub\WWWRoot目录)。这个文件可以包含一个或者多个HTML的<OBJECT>标记,创建将在该应用程序或者用户会话内使用的组件实例。
Global.asa文件主要基于会话级事件被访问,在以下3种情况下被调用:
● 当Application_OnStart或者Application_OnEnd事件被触发时。
● 当Session_OnStart或者Session_OnEnd事件被触发时。
● 当引用一个在Global.asa文件里被实例化的对象(Object)时。
该文件的具体处理格式如下:
<Script LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
'处理应用程序启动时的代码
End Sub
Sub Application_OnEnd
'处理应用程序结束时的代码
End Sub
Sub Session_OnStart
'处理会话启动时的代码
End Sub
Sub Session_OnEnd
'处理会话结束时的代码
End Sub
</Script>
通常,当服务器启动后,第一个用户链接到该站点,会启动Application_OnStart事件,随后会启动针对该用户Session_OnStart事件。当该用户断开与此站点的连接,则会启动Session_OnEnd事件。Application_OnEnd事件一般会在服务器关闭时触发。
在session和application的区别Global.asa文件中,如果包含的脚本没有用<SCRIPT>标记封装,或者定义的对象没有会话或者应用程序作用域,则服务器将返回错误。 | |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论