知识大全 Application对象与Session对象

Posted

篇首语:讨厌自己明明不甘平凡,却又不好好努力。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Application对象与Session对象相关的知识,希望对你有一定的参考价值。

ASP讲座之三:Application对象与Session对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   一 了解Application对象    为了提神 我们先看一个计数器的例程(你应该运行它以便于理解)   先编辑一个文件   <>  <body>  记录某个页面的点击数示例 <a >wuf asp</a>  </body>  </>  wuf asp的代码如下   <% @ LANGUAGE = VBScript %>  <% wuf asp 记录某一页面的访问数(计数器原理)  Option Explicit  Dim CountWeb  CountWeb = Request ServerVariables( SCRIPT_NAME )   这样保证每个页面都有一个唯一的变量 避免混乱  %>  <HTML><BODY>  <%  Response Write CountWeb & <Br><Br> & vbcrlf  Application Lock  请看讲解  Application(CountWeb) = Application(CountWeb) +   累加器 点击数加   Application UnLock  Response Write WEB服务器关闭重启前该页的点击总数为: & Application(CountWeb)  %>  </BODY></HTML>  运行这个程序时 对大部分的人来说 只有一台机器 既是Web服务器 又是客户端 那么你只能想象这样一种境况了 你的这两个主页文件放在很远的Web服务器上 而如潮水般的国内外用户正通过浏览器访问它们 每个用户点击一次 Application(CountWeb) 的值就加 而且只要存放文件wuf asp的服务器没有关闭 Application(CountWeb)就将一直累加下去 但是注意 如果服务器关闭后重启 则Application(CountWeb)将重新从 开始计数(我晕 我说我的页面访问数怎么老是一位数) 为了避免这种永远从零开始的计数情况 你必须要在服务器关闭之前将Application(CountWeb)的值保存起来 下次需要时再取出来 就能够顺序累计下去了 具体如何做 且听N回后分解   接下来的问题 就是Application Lock UnLock是什么意思?刚才我们做了一个假设 大量的用户正在访问该页面 而每一个用户的点击都会发生Application(CountWeb)加 想想看 这样不就乱套了(什么!想不出 那肯定是你的主页终日只有你一个人赞助) 所以得有个先来后到的规则 当某一用户访问该页面 需要修改Application(CountWeb)的值时 使用Lock方法加锁 避免其他用户修改 修改完后 再解锁   从上例中您是否已看出 Application对象提供给所有用户共享信息(Application(CountWeb)) 它所面向的是所有用户(每个用户的访问都会导致计数器加 ) Application对象还有两个事件 Application_OnStart事件和Application_OnEnd事件(您可千万别晕 这只是面向对象编程语言中起步的概念) 使用时语法如下   <SCRIPT LANGUAGE=VBScript RUNAT=Server>  Sub Application_OnEnd   当WEB服务器关闭时 将激活Application_OnEnd事件   也就是程序将执行放在这里的代码   因此服务器关闭前我们可以在这里将wuf asp中Application(CountWeb)的值   保存起来 如放在一个文本文件中   End Sub    Sub Application_OnStart   当第一个用户浏览ASP网页时 将激活Application_OnStart事件 而以后其他用户浏览时 就不发生这一事件了   也就是程序将执行放在这里的代码   因此可在这里读出保存在文本文件中Application(CountWeb)的值   End Sub  </SCRIPT>  下面通过一个实例来说明如何使用事件 该程序的作用是统计站点所有页面的总点击数   文件wuf asp的代码(站点内其他页面文件与这个文件类似)   <% @ LANGUAGE = VBScript %>  <% Option Explicit   站内所有页面文件都应包括这句<! #include file= wuf asp >%>  <! #include file= wuf asp >  <HTML><BODY>  在服务器关闭重启之前站点所有页面总点击数: <%= Application( CountAll ) %>  </BODY></HTML>  文件wuf asp的代码   <% wuf asp  Application Lock  Application( CountAll ) = Application( CountAll ) +   Application UnLock  %>  文件wuf asp与wuf asp放在同一目录下 文件global asa的代码   注意 事件处理程序必须以名为 global asa 的文本文件存盘 而且必须放在虚拟路径的根目录下(一般就是与或文件放在同一目录下 例如 以我的机器为例 就绝对路径而言 global asa放在c:\\InetPub\\home下 而wuf asp和wuf asp放在c:\\InetPub\\home\\asp下) 同一虚拟路径只允许有一个global asa文件存在   <SCRIPT LANGUAGE=VBScript RUNAT=Server>   global asa wuf asp 在下载包中的文件名为 global asa 使用时要改名   Sub Application_OnStart   当第一个用户浏览网页时 置计数器初值为    而以后其他用户浏览时 不再执行以下代码  Application Lock  Application( CountAll ) =   Application UnLock  End Sub  </SCRIPT>  浏览wuf asp查看运行结果 看来 仅仅学会使用Application对象并不难      二 认识Session对象    有了前面的Application对象做铺垫 Session对象就容易多了 它与Application对象类似 只不过是仅仅用来记录单个用户的相关信息 它面向单个用户 因此我们可以使用Session对象存储某单个用户的信息   与Application对象一样 Session对象也有两个事件 Session_OnStart事件和Session_OnEnd事件 使用语法与Application对象类似   值得一提的是 使用Session对象前 必须确认浏览器的Cookie功能已启用(默认设置就可以了)   下面举一个实例 文件global asa的要求同上 因此上例中的global asa将被本例中的global asa覆蓋   <SCRIPT LANGUAGE=VBScript RUNAT=Server>   global asa wuf asp 在下载包中文件名为 global asa  Sub Session_OnStart  Session( In ) = Now  函数Now取得当前时间  End Sub    Sub Session_OnEnd  Session( Out ) = Now  Application Lock  Application( Out ) = Session( Out )  Application( In ) = Session( In )  Application( Out ) UnLock  End Sub  </SCRIPT>  文件wuf asp   <%@ Language=VBScript %>  <HTML>  <BODY>  <% wuf asp  Response Write 默认Timeout设置: & Session Timeout & 分钟<Br>   Session Timeout =   Response Write 您进入本站的时间: & Session( In ) & <Br>   Response Write 请在 分钟后刷新本页 & <Br><Br>     if Not IsEmpty(Application( Out )) then  Response Write 您上次进入本站的时间: & Application( In ) & <Br>   Response Write 您上次离开本站的时间: & Application( Out ) & <Br>   Response Write 浏览时间(分钟): &_  Datediff( n Application( In ) Application( Out )) & <Br><Br>   End If    if IsEmpty(Session( Out )) then  Response Write 刷新前和刷新后Session( Out )的值都为空 & <Br>   End If  %>  </BODY>  </HTML>  当用户第一次浏览网页时 发生Session_OnStart事件 程序记录用户本次进入网页的时间 而此时不会发生Session_OnEnd事件 故Application( Out )值为空 程序不会显示浏览时间   我们知道 Application对象的生存期为第一个用户浏览网页直至服务器关闭 而Session对象的生存期为用户第一次浏览网页(会话开始)直至会话结束 那什么时候会话结束呢?具体到本例中 Session Timeout = 设置会话超时为 分钟 即如果长达 分钟没有向Web服务器提供请求 则会话超时 导致会话结束 发生Session_OnEnd事件 程序执行Session_OnEnd内的代码 在这里我们将进入和离开时间分别放入Application( In )和Application( Out ) 因为会话结束后 Session对象将不复存在 这点我们在代码的最后做了验证   从这个例程 可以看出    . Application对象和Session对象的生存期不同    . Session对象是针对单个用户的 它的值存放在客户端 其他用户的浏览对该单用户的Session对象没有任何影响 单个用户只能读写自己Session对象的值(如 Session( In ))    . 注意在Response Write中显示双引号的表示方法 ( Out )    . 特别提醒 该程序没有实用性 仅供调试用(仅适用于只有一个用户浏览的情况) 请思考这是为什么?答案见本文末   提示 请注意Application对象的特性      三 一个经典的实例 如何在网页上显示在线人数    在下面的例子中 用Application( Online )来存放在线人数 用Application( CountAll )存放总访问人数     原理 当一个新用户浏览网页时 发生Session_OnStart事件 在线人数加 访问用户数也加 当某用户离开时 会话超时后会发生Session_OnEnd事件 在线人数减   Global asa代码如下   <SCRIPT LANGUAGE=VBScript RUNAT=Server>   Global asa wuf asp  Sub Application_OnStart  Application Lock   在这里读出Application( CountAll )的初始值  Application UnLock  End Sub    Sub Session_OnStart  Applic cha138/Article/program/net/201311/13475

相关参考

知识大全 ASP Application对象教程

ASPApplication对象教程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在ASPAp

知识大全 JSP页面中Session对象详解

JSP页面中Session对象详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Session

知识大全 Struts架构中的Session对象创建和控制

Struts架构中的Session对象创建和控制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP内建对象速查卡

ASP内建对象速查卡  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Application对象 

知识大全 struts2访问session的两种方法

  Struts的Action中若希望访问Session对象可采用两种方式  从ActionContext中获取  实现SessionAware接口  从ActionContext中获取  impor

知识大全 hibernate的查询策略有哪些

导航对象图从一个已经装载的对象开始通过像aUsergetAddress()getCity()的属性访问器方法访问相关的对象如果Session是打开的当你导航图时Hibernate会自动装载图的节点当对

知识大全 数据库与面向对象是冤家

  面向对象和数据库之间存在着矛盾这正是我们学习了面向对象理论之后信心百倍地要去做项目时突然发现有很多问题的原因……  话说当年面向对象和数据库刚出道的时候曾经引发过惊天动地的大讨论(当然这里说的是关

知识大全 字段对象的概念和字段对象的建立

  数据集组件Table用于与数据表连接如与学生档案表XA连接数据表通常由若干个字段组成如XA由XAXA…XA共个字段组成实现对数据表中各个字段的数据处理就要用到字段对象TField  TField对

刚性管理与柔性管理的主要区别在于__与适用对象不同

刚性管理与柔性管理的主要区别在于_____与适用对象不同。A、目标不同B、基础不同C、方法不同D、目的不同答案:B解析:刚性管理与柔性管理的主要区别在于基础不同与适用对象不同。刚性管理以“经济人”假设

知识大全 对象链接与嵌入(一)[5]

DELPHI基础教程:对象链接与嵌入(一)[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!