<<<返回

Sessions事件
和其他对象不同的是，Session对象中有事件（Event）。一共两种：Session_OnStart事件，当一个Session开始时被触发。还有Session_OnEnd事件，当一个Session结束时被触发。在一个脚本中你可以和其中一个并且只能和其中一个事件关联。 在事件触发时下面这些脚本的语句被执行。这两个脚本位于特定的文件Global.asa。这个文件位于你的网站应用的根目录。它包括了一些通用程序段和你的网站应用。Global.asa文件有如下结构： <SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Application_OnStart
END SUB
</SCRIPT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Application_OnEnd
END SUB
</SCRIPT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_OnStart
END SUB
</SCRIPT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_OnEnd
END SUB
</SCRIPT>
注：下一章提供更加详细的关于Global.asa文件的内容
Global.asa包括四个脚本。这里面有一个是根据Session_OnStart触发，另一个是根据Session_OnEnd触发（下一章介绍剩下的另外两个脚本）
请注意Global.asa使用了微软的HTML拓展<SCRIPT>标记语法来限制脚本，这也就是说，你必须用<SCRIPT>标记来引用这两个事件而不能用<%和%>符号引用。例子中Global.asa使用的是VBScript，但是你也可以使用其他脚本语言。
在Global.asa中不能有任何输出语句，无论是HTML的语法还是Response.Write()方法都是不行的，Global.asa是任何情况下也不能进行显示的。
你只需要在Global.asa中添加一些你希望执行的脚本，那么只要Session一创建，这些脚本就会自动执行，例如下例：
<SCRIPT LANGUAGE=VBScipt RUNAT=Server>
SUB Session_OnStart
Session(“Username”)=“Unknow”
Session(“Userpassword”)=“Unknow”
END SUB
</SCRIPT>
这个脚本将”Unkonw”值赋给了Username和UserPassword变量。这个例子将在任何一个Session 创建的时候就执行。
Session_Onstart脚本可以用于很多种目的。例如，你希望访问者必须浏览某一个主页，下面的例子就在用户进程开始时进行了这种引导，那么这里面使用Response.redirect方法。下面是这个例子：
<Script Language=VBScript RUNAT=Server>
SUB Session_OnStart
MyHomepage=“/homepage.asp”
RequestPage=Request.ServerVariables(“SCRIPT_NAME”)
IF NOT (STRCOMP(MyHomePage,RequestPage,vbTextCompare)=0) THEN
Response.Redirect MyHomePage
END IF
END SUB
</SCRIPT>
在这个脚本中，用户请求和主页路径进行比较，如果不是一样的，用户就被自动引导到该主页。
下面的例子将Session_OnStart和Session_OnEnd都进行了使用：
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_OnStart
Response.AppendToLog Session.SessionID&” Starting”
END SUB
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
SUB Session_Onend
Response.AppendToLog Session.SessionID&” Ending”
END SUB
</SCRIPT>
这个例子中，当用户的Session开始时，日志文件中记录了该用户的Session和Starting信息；当用户的Session结束时，日志文件就记录了该用户的Session结束的信息。这样，你就可以作很多种判断统计，例如说每个人的停留时间、站上现在有多少人等等。这样对于站点设计和定位就很有助益。