<<<返回

创建和读取Application变量
其实这部分相当简单，因为读者您读到这里已经有相当基础了，创建读取过程和以往的Session变量没什么区别，见下面的例子应用： <HTML> <HEAD><TITLE>Application示例</TITLE></HEAD> <BODY> <%
Application(“Greeting”)=”Welcome!”
%>
<%=Application(“Greeting”)%>
</BODY>
</HTML>
在这个示例中，一个新的名字为Greeting的application变量被创建，赋值为”Welcome!”。然后这个变量值”Welcome!”显示在浏览器上。
一旦变量被赋值，它就可以在任何ASP文件中显示出来，即使是其他用户调用。例如，这时候另外一个用户调用下面的ASP文件，也可以显示”Welcome!”信息：
<HTML>
<HEAD><TITLE>另外一页</TITLE></HEAD>
<BODY>
<%=Application(“Greeting”) %>
</BODY>
</HTML>
很重要的需要理解的是，由于Application变量是对于多用户共享的，因此与Session变量有着本质的区别。同时application变量不会因为某一个甚至全部用户离开就消失，一旦建立了application变量，那么它就会一直存在到网站关闭或者这个application被卸载。这经常可能是几周或者几个月。
由于application变量创建时不会自己消亡，因此你就要特别小心的使用，这可是占用内存的，你可要斟酌使用以免降低服务器对其他工作的响应速度。
注：Application变量终止的情况有三种，服务被终止，Global.asa被改变，或者该Application被卸载。
为了更好的了解多用户共享这个概念，，我们拿出下面这个脚本例子：
<%
Randomize
If INT(2*RND)=1 THEN
Application(“FavoriteColor”)=”Blue”
Else
Application(“FavoriteColor”)=”Red”
END IF
%>
很容易理解的是，如果将Application换成Session，那么对于每一个单独用户来说，值很可能是不一样的，但是这里面由于是Application，那么不管多少个用户调用该脚本，大家的该变量都是一样的，即使后来的访问者调用时颜色与前面人调用的不一样，那么由于这种共享变量，自然对于其他人来说就相当于进行变量值的改变。不过，现在细心的读者也许会发现这里面有些问题，即：如果多人同时调用，那么岂不是要乱了。例如下面这个例子：假如你正在使用一个application来记录一个广告条的点击次数，如果两个人正在同时点击，那么冲突怎么办？
<%
NumClicks=Application(“BannerClicks”)
NumClicks=NumClicks+1
Application(“BannerClicks”)=NumClicks
%>
可以看出，每一次点击，该变量值加1，但是如果这个脚本被同时进行，即多人同时点击，幸好有两个Application方法专门应付这种问题，分别是Lock方法和Unclock方法，用来暂时防止其他用户对application变量的改变，那么前面的例子正确形式应该如下：
<%
Application.Lock
NumClicks=Application(“BannerClicks”)
NumClicks=NumClicks+1
Application(“BannerClicks”)=NumClicks
Application.UnLock
%>
脚本的第一行将application进行lock操作，那么其他用户就无法对application变量进行修改直到Unclock操作或者该ASP文件执行结束。
请注意你不能针对个别变量进行Lock操作，也就是说，要不全都Lock，要不全都不。前面的脚本其实也就是防止用户修改该Application的所有变量。
了解Lock方法注意不是永远不让其他用户进行Application变量的修改，而是让修改过程连续有序，防止冲突。