瑞鲁手机APP下载网_专注推荐好用的手机APP和游戏APP

ASP的Session对象详解 Application对象的集合ASP遍历和操作

ASP讲座之三:Application对象与Session对象

查看人次:2摘自:瑞鲁游戏APP

上一讲中,我们学习了Request对象的Form数据集合、QueryString数据集合和ServerVariables数据集合。在继续下面的学习之前,建议你先轻松一下,因为接下来要介绍的Application对象相对比较抽象,刚开始理解起来恐怕会不辨东西。切记:当你找不到北时,便不要过多考虑Application对象到底是什么东西?还是一句老话,先学会使用它。 一、了解Application对象。为了提神,我们先看一个计数器的例程(你应该运行它以便于理解): 先编辑一个wuf16.htm文件: 记录某个页面的点击数示例:wuf17.asp wuf17.asp的代码如下: 运行这个程序时,对大部分的人来说,只有一台机器,既是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事件(您可千万别晕,这只是面向对象编程语言中起步的概念),使用时语法如下: Sub Application_OnEnd   ‘当WEB服务器关闭时,将激活Application_OnEnd事件   ‘也就是程序将执行放在这里的代码   ‘因此服务器关闭前我们可以在这里将wuf17.asp中Application(CountWeb)的值   ‘保存起来,如放在一个文本文件中。 End Sub Sub Application_OnStart   ‘当第一个用户浏览ASP网页时,将激活Application_OnStart事件,而以后其他用户浏览时,就不发生这一事件了   ‘也就是程序将执行放在这里的代码   ‘因此可在这里读出保存在文本文件中Application(CountWeb)的值。 End Sub 下面通过一个实例来说明如何使用事件,该程序的作用是统计站点所有页面的总点击数。 文件wuf18.asp的代码(站点内其他页面文件与这个文件类似): 处理 SSI 文件时出错 处理 SSI 文件时出错 在服务器关闭重启之前站点所有页面总点击数: 文件wuf19.asp的代码:     当用户第一次浏览网页时,发生Session_OnStart事件,程序记录用户本次进入网页的时间,而此时不会发生Session_OnEnd事件,故Application("Out")值为空,程序不会显示浏览时间。     我们知道,Application对象的生存期为第一个用户浏览网页直至服务器关闭。而Session对象的生存期为用户第一次浏览网页(会话开始)直至会话结束。那什么时候会话结束呢?具体到本例中,Session.Timeout = 1设置会话超时为1分钟,即如果长达1分钟没有向Web服务器提供请求,则会话超时,导致会话结束,发生Session_OnEnd事件,程序执行Session_OnEnd内的代码。在这里我们将进入和离开时间分别放入Application("In")和Application("Out"),因为会话结束后,Session对象将不复存在,这点我们在代码的最后做了验证。 从这个例程,可以看出: 1.Application对象和Session对象的生存期不同。 2.Session对象是针对单个用户的,它的值存放在客户端,其他用户的浏览对该单用户的Session对象没有任何影响。单个用户只能读写自己Session对象的值(如:Session("In"))。 3.注意在Response.Write中显示双引号的表示方法:(""Out"")。 4.特别提醒:该程序没有实用性,仅供调试用(仅适用于只有一个用户浏览的情况),请思考这是为什么?答案见本文末。 提示:请注意Application对象的特性。 三、一个经典的实例:如何在网页上显示在线人数 在下面的例子中,用Application("Online")来存放在线人数,用Application("CountAll")存放总访问人数。 原理:当一个新用户浏览网页时,发生Session_OnStart事件,在线人数加1,访问用户数也加1。当某用户离开时,会话超时后会发生Session_OnEnd事件,在线人数减1。 Global.asa代码如下: ' Global.asa - wuf21.asp Sub Application_OnStart   Application.Lock   '在这里读出Application("CountAll")的初始值   Application.UnLock End Sub Sub Session_OnStart   Application.Lock   Application("Online") = Application("Online") + 1   Application("CountAll") = Application("CountAll") + 1   Application.UnLock End Sub Sub Session_OnEnd   Application.Lock   Application("Online") = Application("Online") - 1   Application.UnLock End Sub Sub Application_OnEnd   Application.Lock   '应该在这里将Application("CountAll")保存到文件中   Application.UnLock End Sub Wuf21.asp代码如下:

在线人数:

访问总人数:

    请注意将本例程与wuf17.asp对比,后者是计算点击数,而前者是计算访问人数。 答案:由于Applicaton对象适用于所有用户,所以在多用户的情况下,其他用户的浏览也会改变Application(“In”)和Application(“Out”)的值。

相关文摘:软件资讯 windows
标题名称:《ASP的Session对象详解 Application对象的集合ASP遍历和操作》
本文网址:https://www.sdruilu.cn/news/tpart-2560.html