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标签追加到Application/Session

的对象。该对象可用于确定对象特定属性的值,或者用于遍历集合并获得所有对象

的全部属性,语法格式如下:

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事件一般会在服务器关闭时

触发。

在文件中,如果包含的脚本没有用