19、asp系列课程--session对象的事件

asp 系列 课程 杨凡 博客 it

作者:杨凡
来自:杨凡博客
地址:blog.sina.com.cn/aboutshisan

session对象的事件有2个,分别为:
session_onStart:表示会话开始
sesssion-onEnd:表示会话结束
通过对这2个事件编写脚本,可以在会话开始、会话结束时执行一些动作。
但是,这2个事件有点特殊,针对这2个事件编写的代码,必须是写在一个名为global.asa的文件中,并且,这个global.asa的位置必须在网站的根目录下,并且,编写这些代码时,必须使用script标记并将runat属性设为server,而不能使用asp的脚本定界符<%%>。
具体的格式为:
<script language="vbscript" runat="server">
sub session_onstart
代码
end sub
</script>
相应的,session_onend事件的语句格式为:
<script language="vbscript" runat="server">
sub session_onend
代码
end sub
</script>
比如,我要在会话开始时声明3个会话级的变量,语句为:
<script language="vbscript" runat="server">
sub session_onstart
    session("id")=0
    session("username")=("none")
    session("userpass")=("none")
end sub
</script>
但是,在实际的应用中,会话结束的情况是有多种情况的,它们各自对应的会话结束的标准也不一样,下面我就把它列出来:
(1)使用session.abandon方法主动结束会话,并引发session_onend事件
这时服务器端的会话对象就消失了,也就是服务器已经认为该会话结束了,但是这时浏览器的SessionID还没消失,浏览器这时依然认为会话是存在的
(2)用户超时,服务器自动结束当前会话,引发session_onend事件
这时服务器端的会话对象也消失了,但是浏览器的SessionID依然存在
(3)用户主动关闭浏览器,不引发session_onend事件
因为这时浏览器上的SessionID已经消失,SessionID一消失,也就没有了会话标识,那么会话也就已经中断了,但是服务器中的会话对象依然存在,并且将一直存在到该会话过期为止,所以,这种情况,不会引发session_onend事件。
(4)服务器重启,不引发session_onend事件
因为服务器一旦重启,则释放掉了内存中的所有会话,用户消失,状态消失,没有了会话,自然也就不会再有session_onend事件,但这时浏览器并不知情,浏览器中的SessionID依然是存在的,但是实际上,这个SessionID已经失效了。
这就是我要说的几种会话结束时会不会引发session_onend事件的全部内容。
OK,这节课是点理论性的东西,东西比较少,就说这么多吧。
这节课完毕,就把session对象讲完了,下节课开始讲application对象。


你的评论

就没有什么想说的吗?

最新博客

关于我们 加入传客 媒体报道 帮助中心 传客活动 免责声明 联系我们 移动版 移动应用

©2017传客网    琼ICP备15003173号-2    

本站部分文章来源于互联网,版权归属于原作者。
本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(weishubao@126.com),我们收到后立即删除。
站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

X