您当时的方位:主页 > 言语编程 > ASP

ASP教程9:ASP内建目标Application 和 Session

2014-08-18  www.codeforacause.net
在上一篇中作者给咱们具体介绍了 ASP 内建目标 Response 的运用办法,在这一篇中作者将持续给咱们介绍另两个十分有用且重要的 ASP 的内建目标 Application 和 Session。



   在 ASP 的内建目标中除了用于发送、接纳和处理数据的目标外,还有一些十分有用的代表 Active Server 应用程序和单个用户信息的目标。



   让咱们先来看看 Application 目标。在同一虚拟目录及其子目录下的一切 .asp 文件构成了 ASP 应用程序。咱们非但能够运用 Application 目标,在给定的应用程序的一切用户之间同享信息,并在服务器运转期间耐久的保存数据。而且,Application 目标还有操控拜访应用层数据的办法和可用于在应用程序发动和中止时触发进程的事情。
   下面就让咱们一起来学习 Application 目标。

   一、特点

   虽然 Application 目标没有内置的特点,但咱们能够运用以下句法设置用户界说的特点也可称为调集。

   Application(" 特点 / 调集称号 ")= 值

   咱们能够运用如下脚本声明并树立 Application 目标的特点。
< %


Application("MyVar") = "Hello"


Set Application("MyObj") = Server.CreateObject("MyComponent")






   一旦咱们分配了 Application 目标的特点,它就会耐久地存在,直到封闭 WEB 服务器服务使得 Application 中止。因为存储在 Application 目标中的数值能够被应用程序的一切用户读取,所以 Application 目标的特点特别适合在应用程序的用户之间传递信息。
   二、办法

   Application 目标有两个办法,它们都是用于处理多个用户对存储在 Application 中的数据进行写入的问题

   1、Lock 办法制止其他客户修正 Application 目标的特点。

   Lock 办法阻挠其他客户修正存储在 Application 目标中的变量,以保证在同一时刻仅有一个客户可修正和存取 Application 变量。假如用户没有清晰调用 Unlock 办法,则服务器将在 .asp 文件完毕或超时后即免除对 Application 目标的确定。

   让咱们来看看下面这段用 Application 来记载页面拜访次数的程序 :
< %


Dim NumVisitsNumVisits=0


Application.LockApplication("NumVisits") = Application("NumVisits") + 1


Application.Unlock



欢迎光临本网页,你是本页的第 < %= Application("NumVisits") 位访客 !




   将以上脚本保存在你的 .asp 文件中,就垂手可得地给你的页面添加了一个计数器。

   2、和 Lock 办法相反,Unlock 办法答应其他客户修正 Application 目标的特点。

   在上面的比如中,上述比如中,Unlock 办法免除目标的确定,使得下一个客户端能够添加 NumVisits 的值。

   三、事情

   1、Application_OnStart

   Application_OnStart 事情在初次创立新的会话 ( 即 Session_OnStart 事情 ) 之前发作。当 WEB 服务器发动并答应对应用程序所包括的文件进行恳求时就触发 Application_OnStart 事情。Application_OnStart 事情的处理进程有必要写在 Global.asa 文件之中。



   Application_OnStart 事情的语法如下 :
< SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Application_OnStart. . .


End Sub


< /SCRIPT>


   2、Application_OnEnd

   Application_OnEnd 事情在应用程序退出时于 Session_OnEnd 事情之后发作,Application_OnEnd 事情的处理进程也有必要写在 Global.asa 文件之中。

   下面让咱们来看看在运用 Application 目标时有必要留意的一些事项。

   不能在 Application 目标中存储 ASP 内建目标。例如,下面的每一行都回来一个过错。
< %


Set Application("var1")=Session


Set Application("var2")=Request


Set Application("var3")=Response


Set Application("var4")=Server


Set Application("var5")=Application


Set Application("var6")=ObjectContext





   若您将一个数组存储在 Application 目标中,请不要直接更改存储在数组中的元素。例如,下列的脚本无法运转。
< % Application("StoredArray")(3) = "new value"



   这是因为 Application 目标是作为调集被完成的。数组元素 StoredArray(3) 未获得新的赋值。而此值将包括在 Application 目标调集中,并将掩盖此方位曾经存储的任何信息。主张您在将数组存储在 Application 目标中时,在检索或改动数组中的目标前获取数组的一个副本。在对数组操作时,您应再将数组悉数存储在 Application 目标中,这样您所做的任何改动将被存储下来。下列的脚本对此进行演示。
---asp8a.asp---


< %


dim MyArray()


Redim MyArray(5)


MyArray(0)="hello"


MyArray(1)="some other string"


Application.Lock


Application("StoredArray")=MyArray


Application.Unlock


Response.Redirect "asp8b.asp"




---asp8b.asp---


< %


LocalArray=Application("StoredArray")


LocalArray(1)=" there"


Response.Write LocalArray(0)&LocalArray(1)


Application.Lock


Application("StoredArray")=LocalArray


Application.Unlock




   与 Application 目标具有附近效果的另一个十分有用的 ASP 内建目标便是 Session。咱们能够运用 Session 目标存储特定的用户会话所需的信息。当用户在应用程序的页之间跳转时,存储在 Session 目标中的变量不会铲除,而用户在应用程序中拜访页面时,这些变量一直存在。当用户恳求来自应用程序的 Web 页时,假如该用户还没有会话,则 Web 服务器将主动创立一个 Session 目标。当会话过期或被抛弃后,服务器将中止该会话。



   经过向客户程序发送仅有的 Cookie 能够办理服务器上的 Session 目标。当用户第一次恳求 ASP 应用程序中的某个页面时,ASP 要查看 HTTP 头信息,查看是否有在报文中有名为 ASPSESSIONID 的 Cookie 发送过来,假如有,则服务器会发动新的会话,并为该会话生成一个大局仅有的值,在把这个值作为新 ASPSESSIONID Cookie 的值发送给客户端,正是运用这种 Cookie,能够拜访存储在服务器上的归于客户程序的信息。Session 目标最常见的效果便是存储用户的首选项。例如,假如用户指明不喜欢查看图形,就能够将该信息存储在 Session 目标中。别的其还常常被用在辨别客户身份的程序中。要留意的是,会话状况仅在支撑 cookie 的阅读器中保存,假如客户封闭了 Cookie 选项,Session 也就不能发挥效果了。
   一、特点

   1、SessionID

   SessionID 特点回来用户的会话标识。在创立会话时,服务器会为每一个会话生成一个独自的标识。会话标识以长整形数据类型回来。在许多情况下 SessionID 能够用于 WEB 页面注册计算。

   2、TimeOut

   Timeout 特点以分钟为单位为该应用程序的 Session 目标指定超时时限。假如用户在该超时时限之内不改写或恳求网页,则该会话将中止。

   二、办法

   Session 目标仅有一个办法,便是 Abandon,Abandon 办法删去一切存储在 Session 目标中的目标并开释这些目标的源。假如您未清晰地调用 Abandon 办法,一旦会话超时,服务器将删去这些目标。当服务器处理完当时页时,下面示例将开释会话状况。
  < % 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 服务办理器中设置“应用程序选项”特点页中的“会话超时”特点改动应用程序的默许超时约束设置。应根据您的 Web 应用程序的要求和服务器的内存空间来设置此值。例如,假如您期望阅读您的 Web 应用程序的用户在每一页仅逗留几分钟,就应该缩短会话的默许超时值。过长的会话超时值将导致翻开的会话过多而耗尽您的服务器的内存资源。关于一个特定的会话,假如您想设置一个小于默许超时值的超时值,能够设置 Session 目标的 Timeout 特点。例如,下面这段脚本将超时值设置为 5 分钟。
  < % Session.Timeout = 5

   当然你也能够设置一个大于默许设置的超时值,Session.Timeout 特点决议超时值。你还能够经过 Session 目标的 Abandon 办法显式完毕一个会话。例如,在表格中供给一个“退出”按钮,将按钮的 ACTION 参数设置为包括下列指令的 .asp 文件的 URL。
  < % Session.Abandon

   今日,咱们学习了两个在 WEB 页面特别是根据 WEB 的 BBS 或 Chat 上常常运用 ASP 内建目标,因为这两个目标在实践运用中很有用,因而鄙人一篇中作者将运用至此咱们所学过的 4 个 ASP 内建目标,给咱们演示一个完好的 ASP 应用程序,信任经过这个操练,能大大加深你对 ASP 应用程序的了解和把握。敬请重视“动态网站规划十八般武艺 --ASP 篇 (9)”。