使用的代码一样,只不过这里引用了Session.Contents和Session.StaticObjects集合,而不是Application.Contents和Appliction.StaticObjects集合。
靠近页面底部的按钮的功能是把值增加到Session.Contents集合和从Session.Contents集合删除值。这些按钮与在Application对象示例页面中相应的按钮工作方式相同,这里访问的是Session.Contents集合,以及相应的Remove和
RemoveAll方法。我们不再重复解释。
2. 终止一个用户会话
在Session对象页面的底部有一个按钮,该按钮终止当前的用户会话,这通过调用Session对象的Abandon方法实现。它与其余的HTML控件在相同的窗体上,名为cmdAbandon。当该窗体再次被提交给这个网页时,在Request.Form集合中查找这个值(如同在Application对象例子中做的一样)。如发现这个值,则将该用户重定向到另一个网页:
If Len(Request.Form("cmdAbandon")) Then
Response.Clear
Response.Redirect "abandon.asp"
Response.End
End If
新的页面名为abandon.asp,十分简单,除了创建消息的文本和HTML以外只有如下的代码:
<% Session.Abandon %>
该网页的其余部分只是一个包含单个SUBMIT按钮的窗体。注意如何使用来自Request.ServerVariables集合的引用网页
(HTTP_REFERER)的URL的值,以确保重新载入前一个网页(Session对象例子网页):
<FORM ACTION="<% = Request.ServerVariables("HTTP_REFERER") %>" METHOD="POST">
<P><DIV CLASS="subhead">Your Session Has Been Terminated</DIV>
A new <B>Session</B> will be started when you load another<BR>
ASP page. It will contain any values that are defined in<BR>
the <B>global.asa</B> file for this application.<P>
<INPUT TYPE="SUBMIT" NAME="cmdOK" VALUE=" ">
Return to the previous page<P>
</FORM>
结果如图3-21所示。这时,当前的用户会话已经被终止(放弃),并且该用户不能引用原先的Session集合或属性的内容:
图3-21 终止一个用户会话后的屏幕
然而,记住这一切是在调用Abandon方法的网页执行时,甚至在对该方法的调用已经完成以后,仍能够从Session对象中获得用户的会话内容。当此网页结束时,会话才结束。当然,当返回到显示会话内容的Session对象示例网页时,将启动一个新的ASP会话。它将有一个不同的Start_Time值和通过执行global.asa中的代码创建的其他缺省的会话值,如图3-22所示:
图3-22 重新建立一个用户会话后的屏幕
注意,Session.SessionID属性值没有改变。ASP试图重新分配相同的会话ID,因此不能依靠该值来判定一个新的会话已经启动。
3.4 小结
本章介绍了两个ASP内置对象:Application和Session对象。这些对象引入了ASP的应用程序和用户会话的概念(两者都是特定的术语,并且不是通常谈话时的意义)。ASP应用程序允许分配专门的属性给页面集,定义了IIS和ASP如何管理这
些网页及所使用的其他组件。
然而,使用ASP应用程序和会话的主要原因是需要自动地获得状态。换句话说,存储信息和变量引用的能力,要么对用户装载的所有网页是全局和可用的(即在一个应用程序中),要么仅仅对一个指定的用户的所有网页是可用的(在一个会话中)。这使建立Web应用程序变得非常简单(即应用程序在Web上工作,但能够像传统的编译的应用程序一样能完成指定的任务)。
本章通过一些示例页面,详细介绍如何使用ASP的Application和Session对象。这些页面示范了这两个对象可用的所有技术。
靠近页面底部的按钮的功能是把值增加到Session.Contents集合和从Session.Contents集合删除值。这些按钮与在Application对象示例页面中相应的按钮工作方式相同,这里访问的是Session.Contents集合,以及相应的Remove和
RemoveAll方法。我们不再重复解释。
2. 终止一个用户会话
在Session对象页面的底部有一个按钮,该按钮终止当前的用户会话,这通过调用Session对象的Abandon方法实现。它与其余的HTML控件在相同的窗体上,名为cmdAbandon。当该窗体再次被提交给这个网页时,在Request.Form集合中查找这个值(如同在Application对象例子中做的一样)。如发现这个值,则将该用户重定向到另一个网页:
If Len(Request.Form("cmdAbandon")) Then
Response.Clear
Response.Redirect "abandon.asp"
Response.End
End If
新的页面名为abandon.asp,十分简单,除了创建消息的文本和HTML以外只有如下的代码:
<% Session.Abandon %>
该网页的其余部分只是一个包含单个SUBMIT按钮的窗体。注意如何使用来自Request.ServerVariables集合的引用网页
(HTTP_REFERER)的URL的值,以确保重新载入前一个网页(Session对象例子网页):
<FORM ACTION="<% = Request.ServerVariables("HTTP_REFERER") %>" METHOD="POST">
<P><DIV CLASS="subhead">Your Session Has Been Terminated</DIV>
A new <B>Session</B> will be started when you load another<BR>
ASP page. It will contain any values that are defined in<BR>
the <B>global.asa</B> file for this application.<P>
<INPUT TYPE="SUBMIT" NAME="cmdOK" VALUE=" ">
Return to the previous page<P>
</FORM>
结果如图3-21所示。这时,当前的用户会话已经被终止(放弃),并且该用户不能引用原先的Session集合或属性的内容:
图3-21 终止一个用户会话后的屏幕
然而,记住这一切是在调用Abandon方法的网页执行时,甚至在对该方法的调用已经完成以后,仍能够从Session对象中获得用户的会话内容。当此网页结束时,会话才结束。当然,当返回到显示会话内容的Session对象示例网页时,将启动一个新的ASP会话。它将有一个不同的Start_Time值和通过执行global.asa中的代码创建的其他缺省的会话值,如图3-22所示:
图3-22 重新建立一个用户会话后的屏幕
注意,Session.SessionID属性值没有改变。ASP试图重新分配相同的会话ID,因此不能依靠该值来判定一个新的会话已经启动。
3.4 小结
本章介绍了两个ASP内置对象:Application和Session对象。这些对象引入了ASP的应用程序和用户会话的概念(两者都是特定的术语,并且不是通常谈话时的意义)。ASP应用程序允许分配专门的属性给页面集,定义了IIS和ASP如何管理这
些网页及所使用的其他组件。
然而,使用ASP应用程序和会话的主要原因是需要自动地获得状态。换句话说,存储信息和变量引用的能力,要么对用户装载的所有网页是全局和可用的(即在一个应用程序中),要么仅仅对一个指定的用户的所有网页是可用的(在一个会话中)。这使建立Web应用程序变得非常简单(即应用程序在Web上工作,但能够像传统的编译的应用程序一样能完成指定的任务)。
本章通过一些示例页面,详细介绍如何使用ASP的Application和Session对象。这些页面示范了这两个对象可用的所有技术。