admin 管理员组文章数量: 1184232
2024年3月13日发(作者:remainder)
ASP Session对象
Application对象存储的信息对于连接到该应用程序的所有用户都是全局或者可
访问的。但是,有时切需要存储指定给每个用户的值,而不必通过给这些值分配名
字指明其属于哪个用户。这就需要用到Session对象。
Session对象可以存储特定的用户会话所需要的信息。当用户在应用程序的页面
之间跳转时,存储在Session对象中的变量不会被清除。当用户请求来自Web应用
程序的页面时,如果该用户尚未与Web应用程序建立会话,则Web服务器会自动
建立一个Session对象。当会话过期或者被放弃后,服务器将终止该会话。
1 Session对象属性
Session对象提供的属性,包括Timeout属性、SessionID属性、LCID属性和C
odePage属性,等等。
1.Timeout属性
Session对象的Timeout属性用来设置Session的最长时间间隔,这里所谓的时
间间隔是指服务器端从最近一次向Web服务器提出要求到下一次向Web服务器提
出要求的时间,以分钟为单位,语法如下:
t = 分钟数
2.SessionID属性
SessionID属性可为每个用户返回一个唯一的ID。此ID由服务器生成,是一个
不重复的长整数数字,语法如下:
长整数=nID
例如:
<%
(nID)
%>
服务器会自动生成ID,结果如下:
55702372
3.LCID属性
LCID属性可设置或者返回一个规定位置或者地区的整数。诸如日期、时间以
及货币等内容都会根据位置或者地区来显示。
语法格式如下:
= LCID值
4.CodePage属性
由于用户来自世界各地,无法事先编写各种不同的版本,所以ASP的Session
对象提供CodePage属性。CodePage属性表示字符串编码及转换的依据。代码页是
一个可以包括数字、标点符号以及其他字母的字符集。对于不同的语言和地区可以
使用不同的代码页。例如,ANSI代码页1252用于美国、英语和大多数欧洲语言,
代码页932用于日文字,简体中文的代码页为936。
语法格式如下:
Session. CodePage = CodePage值
2 Session对象方法
Session对象允许从用户会话空间删除指定值,并根据需要终止会话。Session
对象提供了三种方法:方法、All方法和Abandon
方法。
1.方法
方法可从Contents集合中删除一个项目。语法格式如下:
(name|index)
其中,name表示要删除项目的名称,index表示要删除项目的索引号。例如下
面给出的示例:
<%
Session("test1")=("First test")
Session("test2")=("Second test")
Session("test3")=("Third test")
("test2")
For Each x In ts
(x & "=" & ts(x) & "
")
Next
%>
输出结果如下所示:
test1=First test
test3=Third test
2.All方法
与方法相似,All方法可从Contents集合中删
除全部项目。语法格式如下:
All()
3.Abandon方法
Abandon方法删除所有存储在Session对象中的对象并释放这些资源。如果明
确地调用Abandon方法,一旦会话超时,服务器就会删除这些对象,无法再取得其
变量值,而且Session_OnEnd事件将一起被激活,语法格式如下:
n
Abandon方法被调用时,将按顺序删除当前的Session对象,不过在当前页中
所有脚本命令都处理完后,对象才会被真正删除。这就是说,在调用Abandon方法
时,可以在当前页上访问存储在Session对象中的变量,但在随后的Web页面就不
行。
3 Session对象事件
Session对象对应两个事件:Session_OnStart、Session_OnEnd。其中Session_O
nStart事件对应Session对象的起始事件,每当开始一个新会话,该事件所定义的代
码都将被激活;Session_OnEnd事件对应Session对象的结束事件,当会话终止或者
失效时,触发该事件。
这两个事件的代码必须放在文件中,语法格式如下:
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
的对象。该对象可用于确定对象特定属性的值,或者用于遍历集合并获得所有对象
的全部属性,语法格式如下:
Objects (对象变量名称)
5 文件
已经知道Application对象和Session对象的OnStart、OnEnd事件的脚本都必须
在文件中声明。下面来看看是一个什么样的文件,它到底有
何作用,又是如何运行的。
首先.asa是文件的后缀名,它是Active Server Application的首字母缩写。Glo
文件可以管理ASP应用中两个非常苛刻的对象:Application对象、Session
对象。
每当一个应用程序或者会话启动或者结束时,ASP触发一个事件。可以通过在
一个特殊的文件中编写脚本代码来检测和应答这些事件,文件
位于一个应用程序的根目录中(对于默认的Web网站是InerpubWWWRoot目录)。
这个文件可以包含一个或者多个HTML的
者用户会话内使用的组件实例。
文件主要基于会话级事件被访问,在以下3种情况下被调用:
当Application_OnStart或者Application_OnEnd事件被触发时。
当Session_OnStart或者Session_OnEnd事件被触发时。
当引用一个在文件里被实例化的对象(Object)时。
该文件的具体处理格式如下:
通常,当服务器启动后,第一个用户链接到该站点,会启动Application_OnSta
rt事件,随后会启动针对该用户Session_OnStart事件。当该用户断开与此站点的连
接,则会启动Session_OnEnd事件。Application_OnEnd事件一般会在服务器关闭时
触发。
在文件中,如果包含的脚本没有用