虎虎漫画小说

繁体版 简体版
虎虎漫画小说 > > asp基础入门篇最新章节 > 第 7 章

第 7 章 免费阅读

器将删除这些对象。当服务器处理完当前页时,下面示例将释放会话状态。

< % Session.Abandon

三、事件

Session 对象有两个事件可用于在 Session 对象启动和释放是运行过程。

1、Session_OnStart 事件在服务器创建新会话时发生。服务器在执行请求的页之前先处理该脚本。Session_OnStart 事件是设置会话期变量的最佳时机,因为在访问任何页之前都会先设置它们。

尽管在 Session_OnStart 事件包含 Redirect 或 End 方法调用的情况下 Session 对象仍会保持,然而服务器将停止处理 Global.asa 文件并触发 Session_OnStart 事件的文件中的脚本。

为了确保用户在打开某个特定的 Web 页时始终启动一个会话,就可以在 Session_OnStart 事件中调用 Redirect 方法。当用户进入应用程序时,服务器将为用户创建一个会话并处理 Session_OnStart 事件脚本。您可以将脚本包含在该事件中以便检查用户打开的页是不是启动页,如果不是,就指示用户调用 Response.Redirect 方法启动网页。程序如下 :

< SCRIPT RUNAT=Server Language=VBScript>

Sub Session_OnStart

startPage = "/MyApp/StartHere.asp"

currentPage = Request.ServerVariables("SCRIPT_NAME")

if strcomp(currentPage,startPage,1) then

Response.Redirect(startPage)

end if

End Sub

< /SCRIPT>

上述程序只能在支持 cookie 的浏览器中运行。因为不支持 cookie 的浏览器不能返回 SessionID cookie,所以,每当用户请求 Web 页时,服务器都会创建一个新会话。这样,对于每个请求服务器都将处理 Session_OnStart 脚本并将用户重定向到启动页中。

2、Session_OnEnd 事件在会话被放弃或超时发生。

关于使用 Session 对象需要注意的事项 Application 对象相近,请参照前文。

会话可以通过以下三种方式启动 :

1、一个新用户请求访问一个 URL,该 URL 标识了某个应用程序中的 .asp 文件,并且该应用程序的 Global.asa 文件包含 Session_OnStart 过程。

2、用户在 Session 对象中存储了一个值。

3、用户请求了一个应用程序的 .asp 文件,并且该应用程序的Global.asa 文件使用 < OBJECT>标签创建带有会话作用域的对象的实例。

如果用户在指定时间内没有请求或刷新应用程序中的任何页,会话将自动结束。这段时间的默认值是 20 分钟。可以通过在 Internet 服务管理器中设置“应用程序选项”属xìng页中的“会话超时”属xìng改变应用程序的默认超时限制设置。应依据您的 Web 应用程序的要求和服务器的内存空间来设置此值。例如,如果您希望浏览您的 Web 应用程序的用户在每一页仅停留几分钟,就应该缩短会话的默认超时值。过长的会话超时值将导致打开的会话过多而耗尽您的服务器的内存资源。对于一个特定的会话,如果您想设置一个小于默认超时值的超时值,可以设置 Session 对象的 Tcomout 属xìng。例如,下面这段脚本将超时值设置为 5 分钟。

< % Session.Tcomout = 5

当然你也可以设置一个大于默认设置的超时值,Session.Tcomout 属xìng决定超时值。你还可以通过 Session 对象的 Abandon 方法显式结束一个会话。例如,在表格中提供一个“退出”按钮,将按钮的 ACTION 参数设置为包含下列命令的 .asp 文件的 URL。

< % Session.Abandon

今天,我们学习了两个在 WEB 页面特别是基于 WEB 的 BBS 或 Chat 上经常使用 ASP 内建对象,由于这两个对象在实际运用中很实用,因此在下一篇中作者将运用至此我们所学过的 4 个 ASP 内建对象,给大家演示一个完整的 ASP 应用程序,相信通过这个练习,能大大加深你对 ASP 应用程序的理解和掌握。敬请关注“动态网站设计十八般武艺 --ASP 篇 (9)”。

ASP教程:Global.asa文件的使用及Chat程序

在上一篇中作者给大家详细介绍了两个非常实用的 ASP 内建对象 Application 和 Session 的使用方法。由于这两者的 OnStart、OnEnd 事件的脚本都必须在 Global.asa 文件中声明 , 因此,本篇将给大家详细介绍 Global.asa 文件的使用方法。为使大家熟练掌握至今所学过的知识,本篇还将举出一个 ASP 的 Chat 程序,供各位参考。

最近很多朋友来信问我,为什么前两期的范例程序运行时有这样那样的错。首先,我要向大家声明,这些程序都是我自己写的,在出“厂”前都经过合格检验,绝无“假冒伪劣产品”。:) 由于程序中使用了 cookie 记录客户信息,所以如果你在浏览器中没有设置接受 cookie 则程序将不能正常运行。另外,程序将客户信息记录在客户端的 cookie 所使用的方法是 Response.Cookie,此语句必须写在 ASP 文件中的第一个 < HTML>标记前,这是因为 Cookie 是作为 HTTP 传输的头信息的一部分发送给客户的,如果当 HTTP 报头信息已经传输给客户后再使用 Response.Cookie,将出现以下错误 :“HTTP 标题已经写入到客户浏览器。任何 HTTP 标题的修改必须在写入页内容之前。”,可能一些朋友在剪贴程序的时候没有注意,打乱了程序的前后次序 , 或者是错误的将 HTML 代码添加在 ASP 范例程序之前,因而导致程序运行出错。因此,我建议大家一方面在首次运行例程的时候不要对程序进行任何改动,尽量在看懂程序的基础上逐步改进,另一方面在运行 ASP 程序时至少要在浏览器中选择可接受 Cookie,否则一旦 ASP 程序中使用了 Cookie 或 Session,它们都将无法正常运行。

下面我来向大家介绍 Global.asa 文件的使用方法。

什么是 Global.asa 文件?它其实是一个可选文件,程序编写者可以在该文件中指定事件脚本,并声明具有会话和应用程序作用域的对象。该文件的内容不是用来给用户显示的,而是用来存储事件信息和由应用程序全局使用的对象。该文件的名称必须是 Global.asa 且必须存放在应用程序的根目录中。每个应用程序只能有一个 Global.asa 文件。

在 Global.asa 文件中,如果包含的脚本没有用 < SCRIPT>标记封装,或定义的对象没有会话或应用程序作用域,则服务器将返回错误。我们可以用任何支持脚本的语言编写 Global.asa 文件中包含的脚本。如果多个事件使用同一种脚本语言,就可以将它们组织在一组 < SCRIPT>标记中。

在 Global.asa 文件中声明的过程只能从一个或多个与 Application_OnStart、Application_OnEnd、Session_OnStart 和 Session_OnEnd 事件相关的脚本中调用。在基于 ASP 的应用程序的 ASP 页中,它们是不可用的。如果要在应用程序之间共享过程,可在单独的文件中声明这些过程,然后使用服务器端包容 (SSI) 语句将该文件包含在调用该过程的 ASP 程序中。通常,包含文件的扩展名应为 .inc。

下面是一个很标准的 Global.asa 文件 :

< SCRIPT LANGUAGE="VBScript" RUNAT="Server">

\'Session_OnStart 当客户首次运行 ASP 应用程序中的任何一个页面时运行

\'Session_OnEnd 当一个客户的会话超时或退出应用程序时运行

\'Application_OnStart 当任何客户首次访问该应用程序的首页时运行

\'Application_OnEnd 当该站点的 WEB 服务器关闭时运行

< /SCRIPT>

< SCRIPT LANGUAGE="VBScript" RUNAT="Server">

Sub Application_OnStart

VisitorCountFilencom = Server.MapPath ("/ex2") + "\\VisitCount.txt"

Set FileObject = Server.CreateObject("Scripting.FileSystemObject")

Set Out= FileObject.OpenTextFile (VisitorCountFilencom, 1, FALSE, FALSE)

Application("visitors") = Out.ReadLine

Application("VisitorCountFilencom") = VisitorCountFilencom

End Sub

\'=========================================================

SUB Application_OnEnd

Set FileOutObject = Server.CreateObject("Scripting.FileSystemObject")

Set Out= FileOutObject.CreateTextFile (Application("VisitorCountFilencom"), TRUE,FALSE)

Out.WriteLine(application("visitors"))

End Sub

\'=========================================================Sub Session_OnStart

Session.Tcomout = 5

『加入书签,方便阅读』