知识大全 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相关参考
ASPApplication对象教程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在ASPAp
JSP页面中Session对象详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Session
Struts架构中的Session对象创建和控制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP内建对象速查卡 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Application对象
Struts的Action中若希望访问Session对象可采用两种方式 从ActionContext中获取 实现SessionAware接口 从ActionContext中获取 impor
导航对象图从一个已经装载的对象开始通过像aUsergetAddress()getCity()的属性访问器方法访问相关的对象如果Session是打开的当你导航图时Hibernate会自动装载图的节点当对
面向对象和数据库之间存在着矛盾这正是我们学习了面向对象理论之后信心百倍地要去做项目时突然发现有很多问题的原因…… 话说当年面向对象和数据库刚出道的时候曾经引发过惊天动地的大讨论(当然这里说的是关
数据集组件Table用于与数据表连接如与学生档案表XA连接数据表通常由若干个字段组成如XA由XAXA…XA共个字段组成实现对数据表中各个字段的数据处理就要用到字段对象TField TField对
刚性管理与柔性管理的主要区别在于_____与适用对象不同。A、目标不同B、基础不同C、方法不同D、目的不同答案:B解析:刚性管理与柔性管理的主要区别在于基础不同与适用对象不同。刚性管理以“经济人”假设
DELPHI基础教程:对象链接与嵌入(一)[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!