当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP讲座之三:Application对象与Session对象

ASP
编写通用的asp防注入程序
vbs(asp)下的Function 语句
ASP中类Class相关内容的整理资料
字符批量替换程序asp服务器版
旁注-网站小助手旭方修改免杀asp版
用正则表达式写的HTML分离函数
asp中"无限流"分页程序代码
asp的一个日期格式化函数
asp中创建多级目录的两段代码
asp中去除内容HTML标签的三个function函数
chr(9)、chr(10)、chr(13)、chr(32)、chr(34)讲解
方便的大家admin及admin888 经过 md5加密后16位和32位代码
可用的ASP无重复数字随机函数, 数组实现, 并应用于随机显示记录集
asp动态级联菜单代码
ASP中经常使用的SQL语句与教程说明
实例分析之用ASP编程实现网络内容快速查找的代码
服务端 VBScript 与 JScript 几个相同特性的写法与示例
ASP 环境下 VBS 事件应用 示例代码
asp 之上传漏洞终结篇
asp中一段防SQL注入的通用脚本

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 102 ::
收藏到网摘: n/a

上一讲中,我们学习了Request对象的Form数据集合、QueryString数据集合和ServerVariables数据集合。在继续下面的学习之前,建议你先轻松一下,因为接下来要介绍的Application对象相对比较抽象,刚开始理解起来恐怕会不辨东西。切记:当你找不到北时,便不要过多考虑Application对象到底是什么东西?还是一句老话,先学会使用它。

一、了解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放在同一目录下