当前位置: 首页 > 图文教程 > 网络编程 > ASP > 关于Global.asa文件的深入研究与session变量失效提示的具体方法

ASP
用ASP编写网络传呼机
用ASP+CSS实现随机背景
ASP下载系统防盗链方法
用ASP编写下载网页中所有资源的程序
Request.ServerVariables应用
解决Asp程序的Server.CreateObject错误
ASP实现TCP端口扫描的方法
源码实例:ASP实现远程保存图片
用ASP+DLL实现WEB方式修改服务器时间
ASP使用MySQL数据库全攻略
ASP+SQL Server构建网页防火墙
教程/ASP 十天学会ASP之第二天
教程/ASP 十天学会ASP之第四天
教程/ASP 十天学会ASP之第五天
教程/ASP 十天学会ASP之第六天
教程/ASP 十天学会ASP之第七天
教程/ASP 十天学会ASP之第八天
教程/ASP 十天学会ASP之第九天
教程/ASP 十天学会ASP之第十天
关于学习ASP和编程的28个观点

ASP 中的 关于Global.asa文件的深入研究与session变量失效提示的具体方法


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

       一:Global.asa文件的释疑!从字面上讲!Global就是全局的,全球的意思!
   我们都知道!浏览器中的变量存活期十分短暂!只有几十秒!也就是一个页面的下载时间。那么我们怎样从生命开始
  到结束都追踪session级变量哪?靠asp文件已经力不从心了!微软告诉我们:靠我们的Global.asa吧!
   global.asa是一个可选的文件!他必须放在你的www根目录下,或是虚拟目录的根目录下。这样,可以确保你的一个应
  用程序共享一个global.asa文件。正是他可以在你的应用程序开始始终追踪应用程序对象与会话对象。
  
  二:Global.asa文件的组成与用法释疑!
   为了让服务器纪录单独用户的线程。Global.asa文件必须指定
  <SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
  .......
  </SCRIPT>
  而runat=server这行文字告诉我们他确实是在服务器上执行的。(所以你不可能用msgbox()的函数,也不可能用
  document.write的方法提示用户或写一些什么!后有详述)
  完整的用法是:
  <SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
  
  Sub Application_OnStart
  . . .
  End Sub
  
  Sub Application_Onend
  . . .
  End Sub
  
  Sub session_OnStart
  . . .
  End Sub
  
  Sub session_Onend
  . . .
  End Sub
  
  </SCRIPT>
  
  而整个过程是这样的。当你访问一个站点文件。如果是html的,则程序不会运行!因为里面不可能有application,session
  对象的发生。如果是asp文件,则服务器首先检测www的根目录,或虚拟目录的根目录有没有global.asa文件。如有,则运
  行程序内的相应代码!但是请注意,如果你的asp文件中并没有建立实例化的application,session。服务器同样不追踪
  你!
   另外:值得注意的是:在Onstart事件发生时,服务器的任何对象都可以使用!
  但是当onend事件发生时。则应注意session_Onend中只允许server,application,session对象运行。但实际上限制更多。
  你不能在其中运行server.mapth方法。而且不可以再对session进行附值。
  
  三:如何在session对象失效时提醒用户---失效后
   终于开始讨论有用的话题了!这也是许多网友关心的问题!
   首先,我们讨论失效后如何提醒。
   这也要提醒吗?直接检测session("**")得值就可以吗?(**为你要检测其session("**")是否失效的值!)这样并不
  好,因为第一次上来的人也可能其session("**")为空!
   那么,我们来看看,该功能具体用在什么地方。最明显的例子为购物网页,如果你用session来存储购物车。你必须告
  诉他他的购物车是否失效(如果再购物期间用户出去了,或是肚子不舒服了临时干了什么!session的值可能失效!)
   有的想法是一失效就给出提示。可惜很难实现!因为session_onend事件在服务器端执行!不可能及时的传过来告诉
  你,除非用server push的方法。其实也不好!如果你不在,或是没有了连接,他同样无法完成。
   所以只有用户再次登陆时告诉你你的上一次购物未完成,只有重新登陆!
   这下就好实现了。针对与单独的客户,如果他开始购物了那么他将触发session_onstart事件的发生。这样你在
  global.asa中对其客户端做标记!代码如下:
  <SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
  .....
  Sub session_OnStart
   response.cookies("flag")=1
  End Sub
  ......
  </script>
  然后在你的检测代码中写下检测代码
  flag=request.cookies("flag")
  
  if flag=1 and session(**)="" then
   response.write "你的上一次登陆已过期了"
   response.end
  elseif session(**)="" then
   response.write "你还没有登陆"
  end if
  你可以将其写成一个文件,然后用<--#include....-->包含进你需要检测的文件中,这样就可以完成对其检测了!
  
  那为什么