Application事件

和Session事件一样，Application也有两个时间Application_OnStart和Application_OnEnd，第一个事件在Application开始时触发，后者在结束时触发。

什么时候application开始呢？不，不是网站一开始，是第一个请求Application的页面被调用。

一个Application的OnStart事件肯定是在Session_Start事件之前的。不过，Application不会象Session那样在一个新用户请求后就触发，Application只触发一次，就是第一个用户的第一次请求。

Application_OnEnd事件只有在服务终止或者该application卸载时才会触发，例如，你在Internet Service Manager中关闭了网络服务。，那么Application_OnEnd事件就会触发，如果你针对单独目的使用application，这个事件可以通过application在利用Unload按钮卸载时进行触发。一个Application_OnEnd事件肯定发生在Session_OnEnd事件之后。

Application_OnStart和Application_OnEnd事件都是触发一个也是唯一一个脚本程序。而且这些事件都在一个文件中，那就是在Session事件中提到的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>

有关Session的事件我们认为你已经在第16章学的很不错了，那么其余的两个就是我们现在要介绍的Application事件。

这里面和Session事件一样限制的是，你不能使用HTML标志，不能进行任何输出，不能将语句写出子程序或者写成其他方式。因此，编写时要特别小心。

Application_Onstart事件一般是用来初始化这个Application的变量，例如下面用Application_Onstart事件和Session_OnStart事件来进行访问人数统计：

<Script Language=VBScript RUNAT=Server>

SUB Application_OnStart

Application(

“TotalUsers”)=0

END SUB

</SCRIPT>

<SCRIPT Language=VBScript RUNAT=Server>

SUB Session_OnStart

Application.Lock

Application(

“TotalUsers”)=Application(“TotalUsers”)+1

Application.Unclock

END SUB

</SCRIPT>

在Application_OnStart事件中只有一个语句将TotalUsers变量置0，只有网站开始后这个脚本才能执行。

Session_OnStart事件在每一个用户到达后都都将TotalUsers加1，同时使用Lock方法防止冲突。

这样，在你希望显示访问人数的页面上，加入下面脚本：

<%=Application(

“TotalUsers”) %>