日期:2010-12-05 浏览次数:20896 次
一、了解Application对象。为了提神,我们先看一个计数器的例程(你应该运行它以便于理解): 先编辑一个wuf16.htm文件: <html> <body> 记录某个页面的点击数示例:<a href="wuf17.asp">wuf17.asp</a> </body> </html> wuf17.asp的代码如下: <% @ LANGUAGE = VBScript %> <% 'wuf17.asp - 记录某一页面的访问数(计数器原理) Option Explicit Dim CountWeb CountWeb = Request.ServerVariables("SCRIPT_NAME") '这样保证每个页面都有一个唯一的变量, 避免混乱 %> <HTML><BODY> <% Response.Write CountWeb & "<Br><Br>" & vbcrlf Application.Lock '请看讲解 Application(CountWeb) = Application(CountWeb) + 1 '累加器,点击数加1 Application.UnLock Response.Write "WEB服务器关闭重启前该页的点击总数为: " & Application(CountWeb) %> </BODY></HTML> 运行这个程序时,对大部分的人来说,只有一台机器,既是Web服务器,又是客户端。那么你只能想象这样一种境况了:你的这两个主页文件放在很远的Web服务器上,而如潮水般的国内外用户正通过浏览器访问它们。每个用户点击一次,Application(CountWeb) 的值就加1,而且只要存放文件wuf17.asp的服务器没有关闭,Application(CountWeb)就将一直累加下去。但是注意,如果服务器关闭后重启,则Application(CountWeb)将重新从0开始计数(我晕,我说我的页面访问数怎么老是一位数)。为了避免这种永远从零开始的计数情况,你必须要在服务器关闭之前将Application(CountWeb)的值保存起来,下次需要时再取出来,就能够顺序累计下去了,具体如何做,且听N回后分解。 接下来的问题,就是Application.Lock、UnLock是什么意思?刚才我们做了一个假设,大量的用户正在访问该页面,而每一个用户的点击都会发生Application(CountWeb)加1,想想看,这样不就乱套了(什么!想不出,那肯定是你的主页终日只有你一个人赞助),所以得有个先来后到的规则。当某一用户访问该页面,需要修改Application(CountWeb)的值时,使用Lock方法加锁,避免其他用户修改,修改完后,再解锁。 从上例中您是否已看出,Application对象提供给所有用户共享信息(Application(CountWeb)),它所面向的是所有用户(每个用户的访问都会导致计数器加1)。Application对象还有两个事件,Application_OnStart事件和Application_OnEnd事件(您可千万别晕,这只是面向对象编程语言中起步的概念),使用时语法如下: <SCRIPT LANGUAGE=VBScript RUNAT=Server> Sub Application_OnEnd ‘当WEB服务器关闭时,将激活Application_OnEnd事件 ‘也就是程序将执行放在这里的代码 ‘因此服务器关闭前我们可以在这里将wuf17.asp中Application(CountWeb)的值 ‘保存起来,如放在一个文本文件中。 End Sub Sub Application_OnStart ‘当第一个用户浏览ASP网页时,将激活Application_OnStart事件,而以后其他用户浏览时,就不发生这一事件了 ‘也就是程序将执行放在这里的代码 ‘因此可在这里读出保存在文本文件中Application(CountWeb)的值。 End Sub </SCRIPT> 下面通过一个实例来说明如何使用事件,该程序的作用是统计站点所有页面的总点击数。 文件wuf18.asp的代码(站点内其他页面文件与这个文件类似): <% @ LANGUAGE = VBScript %> <% Option Explicit ‘站内所有页面文件都应包括这句<!--#include file="wuf19.asp"-->%> <!--#include file="wuf19.asp"--> <HTML><BODY> 在服务器关闭重启之前站点所有页面总点击数: <%= Application("CountAll") %> </BODY></HTML> 文件wuf19.asp的代码: <% ' wuf19.asp Application.Lock Application("CountAll") = Application("CountAll") + 1 Application.UnLock %> 文件wuf18.asp与wuf19.asp放在同一目录下。文件global.asa的代码: 注意:事件处理程序必须以名为“global.asa”的文本文件存盘,而且必须放在虚拟路径的根目录下(一般就是与index.htm或default.htm文件放在同一目录下,例如:以我的机器为例,就绝对路径而言,global.asa放在c:\InetPub\home下,而wuf18.asp和wuf19.asp放在c:\InetPub\home\asp下),同一虚拟路径只允许有一个global.asa文件存在。 <SCRIPT LANGUAGE=VBScript RUNAT=Server> 'global.asa - wuf18.asp 在下载包中的文件名为18global.asa,使用时要改名。 Sub Application_OnStart ‘当第一个用户浏览网页时,置计数器初值为0, ‘而以后其他用户浏览时,不再执行以下代码 Application.Lock Application("CountAll") = 0 Application.UnLock End Sub </SCRIPT> 浏览wuf18.asp查看运行结果。看来,仅仅学会使用Application对象并不难。 二、认识Session对象。有了前面的Application对象做铺垫,Session对象就容易多了。它与Application对象类似,只不过是仅仅用来记录单个用户的相关信息,它面向单个用户,因此我们可以使用Session对象存储某单个用户的信息。 与Application对象一样,Session对象也有两个事件:Session_OnStart事件和Session_OnEnd事件。使用语法与Application对象类似。 值得一提的是,使用Session对象前,必须确认浏览器的Cookie功能已启用(默认设置就可以了)。 下面举一个实例,文
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|