📄 17-2.cfm.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>使用Application对象</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>
<body>
<b><font FACE="宋体" SIZE="5">
<p ALIGN="JUSTIFY">使用Application对象</p>
</font></b><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">Application对象拥有与Application所有相关的集合,方法,以及事件。下面的部分你将学会怎样使用Application对象来创建application变量和application事件。</p>
</font><font FACE="宋体"><b>
<p ALIGN="JUSTIFY">对Application变量的介绍</p>
</b></font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">一个application变量包含的数据可以在整个application中被所有用户享用。Application对象包括任何类型,包括队列和对象。一个application变量和一个Session变量区别有以下两点:</p>
<p ALIGN="JUSTIFY">■和Session不同的是,Application变量不需要Cookies。网站不需要利用Application变量来跟踪用户进程。这就意味着使用起来很安心,可以适应任何浏览器。</p>
<p ALIGN="JUSTIFY">■和一个Session变量不同的是,application变量可以被多个用户共享。从一个用户接受到的application变量可以传递给另外的用户。</p>
<b>
<p ALIGN="JUSTIFY">注意</p>
</b>
<p ALIGN="JUSTIFY">对Session的了解在第16章。</p>
<p ALIGN="JUSTIFY">下面是利用Application的普通应用:</p>
<p ALIGN="JUSTIFY">■一个application变量可以用来在每个主页上显示瞬态信息,例如,你可以利用application变量来对于每一个主页进行当日新闻的更新。</p>
<p ALIGN="JUSTIFY">■Application可以用来记录广告条被点击的时间和次数。“参看第21章”</p>
<p ALIGN="JUSTIFY">■Application可以从数据库中读取数据,例如,你可以从你的网站的数据库中接受销售品目录然后利用application变量显示在多个主页上。</p>
<p ALIGN="JUSTIFY">■一个Application变量可以用来统计目前上站人数,可以参见后面的小节。</p>
<p ALIGN="JUSTIFY">■一个application变量可以用于网站上不同用户间的通讯,你这样就可以创建多用户游戏以及多用户聊天室,可以参看后面聊天室的应用小节。</p>
</font><font FACE="宋体"><b>
<p ALIGN="JUSTIFY">创建和读取Application变量</p>
</b></font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">其实这部分相当简单,因为读者您读到这里已经有相当基础了,创建读取过程和以往的Session变量没什么区别,见下面的例子应用:</p>
<p ALIGN="JUSTIFY"><HTML></p>
<p ALIGN="JUSTIFY"><HEAD><TITLE>Application示例</TITLE></HEAD></p>
<p ALIGN="JUSTIFY"><BODY></p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">Application(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">Greeting</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">)=</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">Welcome!</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY"><%=Application(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">Greeting</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">)%></p>
<p ALIGN="JUSTIFY"></BODY></p>
<p ALIGN="JUSTIFY"></HTML></p>
<p ALIGN="JUSTIFY">在这个示例中,一个新的名字为Greeting的application变量被创建,赋值为</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">Welcome!</font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">。然后这个变量值</font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">Welcome!</font><font SIZE="3">”</font><font FACE="宋体"
SIZE="3">显示在浏览器上。</p>
<p ALIGN="JUSTIFY">一旦变量被赋值,它就可以在任何ASP文件中显示出来,即使是其他用户调用。例如,这时候另外一个用户调用下面的ASP文件,也可以显示</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">Welcome!</font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">信息:</p>
<p ALIGN="JUSTIFY"><HTML></p>
<p ALIGN="JUSTIFY"><HEAD><TITLE>另外一页</TITLE></HEAD></p>
<p ALIGN="JUSTIFY"><BODY></p>
<p ALIGN="JUSTIFY"><%=Application(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">Greeting</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">) %></p>
<p ALIGN="JUSTIFY"></BODY></p>
<p ALIGN="JUSTIFY"></HTML></p>
<p ALIGN="JUSTIFY">很重要的需要理解的是,由于Application变量是对于多用户共享的,因此与Session变量有着本质的区别。同时application变量不会因为某一个甚至全部用户离开就消失,一旦建立了application变量,那么它就会一直存在到网站关闭或者这个application被卸载。这经常可能是几周或者几个月。</p>
<p ALIGN="JUSTIFY">由于application变量创建时不会自己消亡,因此你就要特别小心的使用,这可是占用内存的,你可要斟酌使用以免降低服务器对其他工作的响应速度。</p>
<b>
<p ALIGN="JUSTIFY">注意</p>
</b>
<p ALIGN="JUSTIFY">Application变量终止的情况有三种,服务被终止,Global.asa被改变,或者该Application被卸载。</p>
<p ALIGN="JUSTIFY">为了更好的了解多用户共享这个概念,,我们拿出下面这个脚本例子:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">Randomize</p>
<p ALIGN="JUSTIFY">If INT(2*RND)=1 THEN</p>
<p ALIGN="JUSTIFY">Application(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">FavoriteColor</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">)=</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">Blue</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">Else</p>
<p ALIGN="JUSTIFY">Application(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">FavoriteColor</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">)=</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">Red</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">END IF</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">很容易理解的是,如果将Application换成Session,那么对于每一个单独用户来说,值很可能是不一样的,但是这里面由于是Application,那么不管多少个用户调用该脚本,大家的该变量都是一样的,即使后来的访问者调用时颜色与前面人调用的不一样,那么由于这种共享变量,自然对于其他人来说就相当于进行变量值的改变。不过,现在细心的读者也许会发现这里面有些问题,即:如果多人同时调用,那么岂不是要乱了。例如下面这个例子:假如你正在使用一个application来记录一个广告条的点击次数,如果两个人正在同时点击,那么冲突怎么办?</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">NumClicks=Application(</font><font SIZE="3">“</font><font
FACE="宋体" SIZE="3">BannerClicks</font><font SIZE="3">”</font><font FACE="宋体"
SIZE="3">)</p>
<p ALIGN="JUSTIFY">NumClicks=NumClicks+1</p>
<p ALIGN="JUSTIFY">Application(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">BannerClicks</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">)=NumClicks</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">可以看出,每一次点击,该变量值加1,但是如果这个脚本被同时进行,即多人同时点击,幸好有两个Application方法专门应付这种问题,分别是Lock方法和Unclock方法,用来暂时防止其他用户对application变量的改变,那么前面的例子正确形式应该如下:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">Application.Lock</p>
<p ALIGN="JUSTIFY">NumClicks=Application(</font><font SIZE="3">“</font><font
FACE="宋体" SIZE="3">BannerClicks</font><font SIZE="3">”</font><font FACE="宋体"
SIZE="3">)</p>
<p ALIGN="JUSTIFY">NumClicks=NumClicks+1</p>
<p ALIGN="JUSTIFY">Application(</font><font SIZE="3">“</font><font FACE="宋体"
SIZE="3">BannerClicks</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">)=NumClicks</p>
<p ALIGN="JUSTIFY">Application.UnLock</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">脚本的第一行将application进行lock操作,那么其他用户就无法对application变量进行修改直到Unclock操作或者该ASP文件执行结束。</p>
<p ALIGN="JUSTIFY">请注意你不能针对个别变量进行Lock操作,也就是说,要不全都Lock,要不全都不。前面的脚本其实也就是防止用户修改该Application的所有变量。</p>
<p ALIGN="JUSTIFY">了解Lock方法注意不是永远不让其他用户进行Application变量的修改,而是让修改过程连续有序,防止冲突。</p>
</font>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -