ASP讲座之三:Application对象与Session对象__教程 |
|
日期:2007-5-20 0:33:36 人气:54 [大 中 小] |
|
|
|
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功能已启用(默认设置就可以了)。 下面举一个实例,文件global.asa的要求同上,因此上例中的global.asa将被本例中的global.asa覆盖。 <SCRIPT LANGUAGE=VBScript RUNAT=Server> ' global.asa - wuf20.asp 在下载包中文件名为20global.asa Sub Session_OnStart Session("In") = Now ‘函数Now取得当前时间 End Sub
Sub Session_OnEnd Session("Out") = Now Application.Lock Application("Out") = Session("Out") Application("In") = Session("In") Application(“Out”).UnLock End Sub </SCRIPT> 文件wuf20.asp: <%@ Language=VBScript %> <HTML> <BODY> <% 'wuf20.asp Response.Write "默认Timeout设置:" & Session.Timeout & "分钟<Br>" Session.Timeout = 1 Response.Write "您进入本站的时间:" & Session("In") & "<Br>" Response.Write "请在 1 分钟后刷新本页" & "<Br><Br>"
if Not IsEmpty(Application("Out")) then Response.Write "您上次进入本站的时间:" & Application("In") & "<Br>" Response.Write "您上次离开本站的时间:" & Application("Out") & "<Br>" Response.Write "浏览时间(分钟):" &_ Datediff("n",Application("In"),Application("Out")) & "<Br><Br>" End If
if IsEmpty(Session("Out")) then Response.Write "刷新前和刷新后Session(""Out"")的值都为空" & "<Br>" End If %> </BODY> </HTML> 当用户第一次浏览网页时,发生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"))。 |
|
出处:本站原创 作者:佚名 |
|
|