解析ASP的Application和Session对象

2016-02-19 17:11 3 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享解析ASP的Application和Session对象,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - Web开发 】

  在已经发表的系列文章中我们已经讨论了两个ASP对象:Application对象和Session对象,因此能够访问Application对象和Session对象提供的集合、方法、属性和事件。本节将从程序设计的角度对这两个对象进行研究。

   当载入ASP DLL并响应对一个ASP网页的第一个请求时,创建Application对象。该对象提供一个存储场所,用来存储对于所有访问者打开的所有网页都可用的变量和对象。

   当访问者首次从站点请求一个ASP页面时,为他创建一个Session对象,并保持有效直到缺省的超时周期(或由脚本确定的超时周期)。该对象提供一个存储场所,用来存储仅仅对该访问者在会话的活动期间打开的网页可用的变量和对象。

  关系

  1、ASP的Application对象成员概述

  本节说明Application对象的集合、方法和事件(Application对象没有属性)。在下一节对Session对象(具有属性)进行同样的说明。然后将继续探讨使用这些对象所完成的任务,更详细地说明每个对象的各成员如何进行工作。

  1. Application对象的集合

  Application对象提供了两个集合,可以用来访问存储于全局应用程序空间中的变量和对象。集合及说明如下所示:

  表Application对象的集合及说明

  集 合说 明Contents没有使用<OBJECT>元素定义的存储于Application对象中的所有变量(及它们的值)的一个集合。包括Variant数组和Variant类型对象实例的引用StaticObjects 使用<OBJECT>元素定义的存储于Application对象中的所有变量(及它们的值)的一个集合

  2. Application对象的方法

  Application对象的方法允许删除全局应用程序空间中的值,控制在该空间内对变量的并发访问。方法及说明如下表所示:

  表Application对象的方法及说明

  方 法说 明 Contents.Remove(variable_name)从Application.Content集合中删除一个名为variable_name的变量 Contents.RemoveAll() 从Application.Content集合中删除所有变量 Lock() 锁定Application对象,使得只有当前的ASP页面对内容能够进行访问。用于确保通过允许两个用户同时地读取和修改该值的方法而进行的并发操作不会破坏内容 Unlock()解除对在Application对象上的ASP网页的锁定

  注意,在运行期间不能从Application.StaticObjects集合中删除变量。

  3. Application对象的事件

  Application对象提供了在它启动和结束时触发的两个事件,如下表所示:

  表Application对象的事件及说明

  事 件说 明 OnStart 当ASP启动时触发,在用户请求的网页执行之前和任何用户创建Session对象之前。用于初始化变量、创建对象或运行其他代码 OnEnd 当ASP应用程序结束时触发。在最后一个用户会话已经结束并且该会话的OnEnd事件中的所有代码已经执行之后发生。其结束时,应用程序中存在的所有变量被取消

  ASP的Session对象成员概述

  本节概述Session对象的所有成员。

  1. Session对象的集合

  Session对象提供了两个集合,可以用来访问存储于用户的局部会话空间中的变量和对象。这些集合及说明如下表所示:

  表 Session对象的集合及说明

  集 合 说 明Contents 存储于这个特定Session对象中的所有变量和其值的一个集合,并且这些变量和值没有使用<OBJECT>元素进行定义。包括Variant数组和Variant类型对象实例的引用 StaticObjects 通过使用<OBJECT>元素定义的、存储于这个Session对象中的所有变量的一个集合

  2. Session对象的特性

  Session对象提供了四个属性。这些属性及说明如下表所示:

  表3-7 Session对象的属性及说明

  属 性说 明CodePage 读/写。整型。定义用于在浏览器中显示页内容的代码页(Code Page)。代码页是字符集的数字值,不同的语言和场所可能使用不同的代码页。例如,ANSI代码页1252用于美国英语和大多数欧洲语言。代码页932用于日文字 LCID 读/写。整型。定义发送给浏览器的页面地区标识(LCID)。LCID是唯一地标识地区的一个国际标准缩写,例如,2057定义当前地区的货币符号是’£’。LCID也可用于FormatCurrency等语句中,只要其中有一个可选的LCID参数。LCID也可在ASP处理指令<%%>中设置,并优先于会话的LCID属性中的设置。本章后面提供一个ASP处理指令的列表 SessionID 只读。长整型。返回这个会话的会话标识符,创建会话时,该标识符由服务器产生。只在父Application对象的生存期内是唯一的,因此当一个新的应用程序启动时可重新使用 Timeout 读/写。整型。为这个会话定义以分钟为单位的超时周期。如果用户在超时周期内没有进行刷新或请求一个网页,该会话结束。在各网页中根据需要可以修改。缺省值是10min。在使用率高的站点上该时间应更短

  3. Session对象的方法

  Session对象允许从用户级的会话空间删除指定值,并根据需要终止会话。Seesion对象的方法及说明如下表所示:

  表Session对象的方法及说明

  方 法说 明Contents.Remove(variable_name) 从Session.Content集合中删除一个名为variable_name的变量 Contents.RemoveAll() 从Session.Content集合中删除所有变量 Abandon()   当网页的执行完成时,结束当前用户会话并撤消当前Session对象。但即使在调用该方法以后,仍可访问该页中的当前会话的变量。当用户请求下一个页面时将启动一个新的会话,并建立一个新的Session对象(如果存在的话)

  注意,在运行期间不能从Session.StaticObjects集合中删除变量。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  4. Session对象的事件

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  Session对象提供了在启动和结束时触发的两个事件,如表3-9所示:

  表3-9 Session对象的事件及说明

  事 件 说 明 OnStart 当ASP用户会话启动时触发,在用户请求的网页执行之前。用于初始化变量、创建对象或运行其他代码。 OnEnd 当ASP用户会话结束时触发。从用户对应用程序的最后一个页面请求开始,如果已经超出预定的会话超时周期则触发该事件。当会话结束时,取消该会话中的所有变量。在代码中使用Abandon方法结束ASP用户会话时,也触发该事件  使用Application和Session的事件

  ASP的Application和Session对象体现了其他ASP内置对象所没有的特征事件。然而,正像在前面的对象成员表中看到的那样,这些都是ASP会话和应用程序的工作相联系的事件。

  1. Application和Session的事件处理器

  每当一个应用程序或会话启动或结束时,ASP触发一个事件。可以通过在一个特殊的文件中编写普通的脚本代码来检测和应答这些事件,这个文件名为global.asa,位于一个应用程序的根目录中(对于缺省的Web网站是InetPubWWWRoot目录,或是作为一个实际应用程序定义的一个文件夹)。这个文件可以包含一个或多个HTML的<OBJECT>元素,用于创建将在该应用程序或用户会话内使用的组件实例。

  下面的代码是global.asa文件的一个例子。我们只关注<OBJECT>元素以及以Set关键字开始的那些代码行:

  

<!-- Declare instance of the ASPCounter componentwith application-level scope //--><OBJECT ID=ASPCounter RUNAT=Server SCOPE=ApplicationPROGID=MSWC.Counters></OBJECT><!-- Declare instance of the ASPContentLimk componentwith session-level scope //--><OBJECT ID=ASPContentLink RUNAT=Server SCOPE=SessionPROGID=MSWC.NextLink></OBJECT><SCRIPT LANGUAGE=VBScript RUNAT=Server>Sub Application_onStart() ‘Create an instance of an ADO Recordset with application-level scope Set Application(ADOConnection)= Server.CreateObject(ADODB.Connection) Dim varArray(3) ‘Create a Variant array and fill it VarArray(0) = This is a VarArray(1) = Variant array VarArray(2) = stored in the VarArray(3) = Application object Application(Variant_Array) = varArray‘Store it in the Application Application(Start_Time) = CStr(Now) ‘Store the date/time as a string Application(Visit_Count) = 0 ‘Set Counter variable to zeroEnd SubSub Application_onEnd() Set Application(ADOConnection) = NothingEnd SubSub Sesson_onStart() ‘Create an instance of the AdRotator component with session-level scope Set Session(ASPAdRotator) = Server.CreateObject(MSWC.AdRotator) Dim varArray(3) ‘Create a Variant arry and fill it VarArray(0) = This is a VarArray(1) = Variant array VarArray(2) = stored in the VarArray(3) = Session object Session(Variant_Array) = varArray ‘Store it in the Session Session(Start_Time) = CStr(Now) ‘Store the date/time as a string ‘We can access the contents of the Request and Response in a Session_onStart ‘event handler for the page that initiated the session. This is the *only* ‘place that the ASP page context is available like this. ‘as an example, we can get the IP address of the user: Session(Your_IP_Address) = Request.ServerVariables(REMOTE_ADDR) Application.Lock intVisits = Application(Visit_Count) +1 Application(Visit_Count) = intVisits Application.UnlockEnd SubSub Session_onEnd() Set Session(ASPAdRotator) = NothingEnd Sub</SCRIPT>

来源:http://www.tulaoshi.com/n/20160219/1614478.html

延伸阅读
标签: Web开发
" CODEPAGE="936"%    %    Response.Expires = 0;    Response.Buffer  = true;    var tPageStartTime = new Date();    %   html   head   title网站-Application变量-Session变量/title   meta http-equiv="Content-Type" content=&...
标签: Web开发
1、什么是会话标识 ASP 为每一个用户会话分配了惟一的识别标志。在创建会话时,服务器会为每一个会话生成一个单独的标识,该标识以长整型数据类型返回,并且随用户在 Web 站点上保存着。使用 Session 对象的 SessionID 属性可以返回用户的会话标识,其格式如下: Session.SessionID   SessionID 属性的用...
标签: Web开发
在原有的asp程序中用asp.net添加功能模块,共享SESSIONs是一个难点,下面介绍一种较为简洁的方法,可以在asp和asp.net中共享session会话。 登录页面使用C#重新创建,在成功登录后执行语句: Response.Write("script language='javascript'window.open('ASPXTOASP.aspx','new');/script"); 打开aspxtoasp.aspx页面,action设为aspxtoasp.asp...
标签: ASP
      ASP对象让你的服务器和浏览器互相影响,你会例行公事的在你的ASP脚本中使用一个或者多个对象。你不用安装任何东西来使用它们,但是你必须要记住打开或者关闭它们。 转自:动态网制作指南 www.knowsky.com   ASP组件,和ASP对象不同,它是ActiveX控制和ASP接口让普通进程单一化。一些普通的使用对象和组件就在...
标签: Web开发
写过稍微大型一点 ASP 的人都知道,Session 这个对象真是好用,它可以用来记录使用者私有的资料变量,既安全又方便。但是你真的知道 Session 的运作原理吗?或许了解以后,你就再也不太敢使用这个令人又爱又恨的对象。虽然转而替代之的方法稍嫌麻烦,但在长期考量之下,也就不得不这么做了。 首先来讲讲 Session 的好处,它可以用来记...

经验教程

446

收藏

82
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部