Session 对象有两个事件:即 OnStart 事件和 OnEnd 事件。通过对这两个事件过程编写脚本可以在会话开始和结束时执行指定的操作。编写这些事件过程的脚本代码时,必须使用 SCRIPT 标记并将 RUNAT 属性设置为 Server ,而不能使用一般的 ASP 脚本定界符<% 和 %>;这些事件过程的脚本代码必须包含在一个名为 global.asa 的文件中,而该文件必须存放在应用程序的根目录中。
1、Session_OnStart 事件
Session_OnStart事件是在服务器创建新会话时发生。服务器在执行请求的页之前先处理该脚本。Session_OnStart事件是设置会话期变量的最佳时机,因为在访问任何页之前都会先执行它们。
当会话开始时触发Session_OnStart事件,然后运行Session_Onstart事件的处理过程。也就是说,当服务器接收到应用程序中的URL的HTTP请求时,触发此事件,并建立一个Session对象。
2、实例
在下在的例子中,通过 Session_OnStart 事件过程对会话变量 UserName 和 Password 进行初始化。代码如下:
<Script Language="VBScript" Runat="session">
Sub Session_OnStart
Session("UserName")="未知"
Session("Password")="未知"
End Sub
</Script>
假如不希望用户第一次访问时直接进入主页之外的其他页面,可以在 Session_OnStart 过程中对用户请求的页面路径与主页路径进行比较,如果不相同,则调用 Response.Redirect 方法将用户引导到主页。脚本如下:
<Script language="VBScript" runat="server">
sub session_OnStart
homePage="/myasp/index.asp"
requestpage=Request.ServerVariables("SCRIPT_NAME")
if homePage<>RequestPage then
response.Redirect homePage
end if
end sub
</script>
3、测试这段代码
首先我们建一个别名为 “myasp” 的虚似目录,将 global.asa 文件保存到这个虚拟目录下,再建一个名为 “index.asp" 的简单主页也放到这个虚拟目录下,然后在这个虚拟目录下建一个名为 1 的子目录,再建一个名为 1.asp 的简单页面放到这个子目录下。最后在地址栏内输入地址: http://127.0.0.1/myasp/1/1.asp, 回车后,你会发现显示的是 index.asp 页面,地址栏内自动将地址转换成127.0.0.1/myasp/index.asp。这表明:当客户第一次登录到 http://127.0.0.1/myasp/1/1.asp 页面,先调用 session_OnStart 事件,在这个事件中通过 Request 对象的 ServerVariables 集合中的 "SCRIPT_NAME" 环境变量获得当前页面的虚拟路径,然后与你指定的页面路径进行比较,如果两者不一样,则通过 response 对象的 Redirect (重定向)方法将页面重新指向你指定的页面。
4、Session_OnEen 事件
当调用 Session.Abandon 方法或在超时时限内没有请求或刷新页面,便发生该事件并执生 Sessiot_End 事件过程,相应的 Session 对象随之自动结束。
在下面的例子中,通过事件过程 Session_OnEnd 将用户标识和结束会话的时间添加到站点日志文件中。
<script language="vbscript" runat="server">
sub session_OnEnd
response.AppendTolog Session.SessionID & Timer()
end sub
</script>
查看全套ASP入门教程