Application对象与Session对象
第05章 Session对象、Application对象和Global文件

– 新用户请求 ASP 文件,且 Global.asa 文件包括 Session_OnStart 过程时。 – Session 变量中存储一个值时。 – 用户请求 ASP 文件,且 Global.asa 文件使用 <object> 标记实例化具有会话范围的对象时。
• 会话会在下列情况下结束:
Abandon方法
Abandon 方法用于显式结束会话。
<% Session.Contents("Name")="Graham" Response.Write("会话变量 Name 的值 (放弃会话<B>之前</B>): " & Session.Contents("Name") & "<BR><BR>") Session.Abandon Response.Write("会话变量 Name 的值(放弃会话<B>之后</B>): " & Session.Contents("Name")) %>
使用 Global.asa文件
新用户访问 ASP 应用程序时,将触发 Session_OnStart 事件。 而当某一特定用户结束对该ASP应用程序的会话访问 时,如退出注销、关闭浏览器,或会话超时,将触发 Session_OnEnd事件。 以下以一网站的“计数器程序”为例,讲述 Global.asa文件的结构及其各事件的触发条件和结果。
访问Session变量
<HTML> <HEAD> <TITLE>使用会话变量</TITLE> </HEAD> <BODY> 这是第 2 页 <BR> <%=Session("mytime")%> </BODY> </HTML>
APPlication,Session和Cookie的区别

APPlication,Session 和Cookie 的区别方法信息量大小保存时间应用范围保存位置Application 任意大小整个应用程序的生命期所有用户服务器端Session 小量,简单的数据用户活动时间+一段延迟时间(一般为20分钟)单个用户服务器端Cookie 小量,简单的数据可以根据需要设定单个用户客户端1.Application 对象 Application 用于保存所有用户的公共的数据信息,如果使用Application 对象,一个需要考虑的问题是任何写操作都要在Application_OnStart 事件(global.asax)中完成.尽管使用Application.Lock 和Applicaiton.Unlock 方法来避免写操作的同步,但是它串行化了对Application 对象的请求,当网站访问量大的时候会产生严重的性能瓶颈.因此最好不要用此对象保存大的数据集合2.Session 对象 Session 用于保存每个用户的专用信息.她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session 中的信息保存在Web 服务器内容中,保存的数据量可大可小.当Session 超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session 对象使保存用户数据的方法效率很低.对于小量的数据,使用Session 对象保存还是一个不错的选择.使用Session对象保存信息的代码如下://存放信息Session["username"]="zhouhuan";//读取数据string UserName=Session["username"].ToString(); 3.Cookie 对象 Cookie 用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie 失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie 对象的Expires 属性设置为Minvalue,则表示Cookie 永远不会过期.Cookie 存储的数据量很受限制,大多数浏览器支持最大容量为4096,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性.使用Cookie对象保存的代码如下://存放信息Response.Cookies["UserID"].Value="0001";//读取信息string UserID=Response.Cookies["UserID"].Value;。
Application对象和Session对象文件

一、供全体应用程序使用的Application对象:Application对象供全体应用程序使用,也就是说,Application对象内保存的数据供全体用户使用。
表现在:1、在同一个ASP程序中所有的用户、页面都可以共享Application对象的信息。
2、所保存的信息,在服务器运行期间可以永久保存(但如果IIS服务终止了或者电脑注销和重启了就没有保存了)3、可以在应用程序启动和停止的时候触发事件。
Application对象的属性:Application对象只有一个属性:value属性,其引用的一般格式为:Application(”变量名称(既value)”)= 值Application对象的方法:Application对象有两种方法,既Application.lock与Application.unlock。
它们用来处理多个用户同时修改Application对象中的数据时的冲突问题。
如果使用了lock方法,就可以确保在一定时间内连接到服务器的用户之中只有一个能获得修改某个公共变量的权力,即对该公共变量进行锁定。
反之,unlock则又对该公共变量进行解锁,使其他用户又可以修改该变量。
Application对象的事件:Application对象有两个事件,即Application_onStart事件和Application_onEnd事件。
Application_onStart事件在创建与服务器的首次会话之前发生,当服务器启动并且允许用户请求时就触发该事件。
Application_onEnd事件则相反,它是在整个ASP程序退出之后发生,两个事件的脚本都应该放在Global.asa中。
(演示ApplicationAndSession.asp文件)二、特定用户会话使用的Session对象:与Application对象类似,都用于保存信息,其区别如下:Application对象内保存的数据供全体用户使用,而Session对象只针对于某个用户使用,既当一个用户登陆网站后,Session对象会给他分配一个Session变量,该用户可以对这个变量进行修改而其他人不能对其修改。
第6章 application和session对象

• • • • • • • • • •
<% Count=session(“count”)+1 Session(“Count”)=count %> ------------------ SESSION的应用 存储用户的首先项 统计网站的在线人数 在不同的WEB页面之间传递数据 保存用户的身份标记,实现用户的身份验 证和用户权限管理等。
3.Application对象的事件(简单了解)
• 1)application对象的事件 • Application对象中有两个事件,一个是 application_onstart事件,另一个 application的application_OnEnd事件 • 这个两事件只能写在一个名为global.asa文 件中. • application_onstart 表示IIS启动时发生的 • Application_onend 表示IIS停止时发生的
SESSION的数据保存与读取
• 保存数据: • Session(“变量名”)=值 读取数据 变量=SESSION(“变量名“) 例如: <%Session(“abcd”)=123%> <%x=Session(“abcd”)%>
• 1. Session对象的属性 • 1)SessionID属性返回用户的会话标识。 • 每一个用户登录(访问)网站时,服务器 IIS自动的为它分配一个高度唯一的号,以 标识该用户的身份。 • 该属性是只读属性(只能读取SESSIONID, 不能设置) • 格式: • Session.sessionid
• 1)applcation对象的作用及特点 • 在WEB服务器中同一虚拟目录及其子目录 下的所有文件都可以认为是WEB应用程序, 而application对象可以看成是一个应用程序 级的对象。也就是说,使用APPLICATION 保存的数据是可以被访问这个应用程序 网站)的不同的用户所共享。 (网站)的不同的用户所共享。 • Application保存的数据在用户退出网站后 保存的数据在用户退出网站后 依然有效,直到IIS重新启动后才会消失 重新启动后才会消失。 依然有效,直到 重新启动后才会消失。
第5章 Session和Application对象

返回 返回
例5-2:处理用户注册时的用户名和密码。 第一步:创建用户注册页面,文件名为Registerinfor.htm。 <HTML> <HEAD><TITLE>用户注册信息</TITLE></HEAD> <BODY> <FORM method = "POST" action = “ Registerresult.asp " > <CENTER><H3>你的注册信息</H3></CENTER> <P>你的姓名:<INPUT type="text" name="Username" size="20"></P> <P>你的性别:<SELECT size="1" name="Sex"> <option selected value="男">男</option> <option value="女">女</option> </SELECT></P> <P>你的公司:<INPUT type="text" name="Company" size="20"></P> <P><INPUT type="submit" value="提交" name="B1"><INPUT type="reset" value=" 清除" name="B2"></P> </FORM> </BODY></HTML>
Application对象与Session对象

上一讲中,我们学习了Request对象的Form数据集合、QueryString数据集合和ServerVariables 数据集合。
在继续下面的学习之前,建议你先轻松一下,因为接下来要介绍的Application 对象相对比较抽象,刚开始理解起来恐怕会不辨东西。
切记:当你找不到北时,便不要过多考虑Application对象到底是什么东西?还是一句老话,先学会使用它。
一、了解Application对象。
为了提神,我们先看一个计数器的例程(你应该运行它以便于理解):先编辑一个wuf16.htm文件:<html><body>记录某个页面的点击数示例:<a href="wuf17.asp">wuf17.asp</a></body></html>wuf17.asp的代码如下:<% @ LANGUAGE = VBScript %><% 'wuf17.asp - 记录某一页面的访问数(计数器原理)Option ExplicitDim CountWebCountWeb = Request.ServerVariables("SCRIPT_NAME")'这样保证每个页面都有一个唯一的变量, 避免混乱%><HTML><BODY><%Response.Write CountWeb & "<Br><Br>" & vbcrlfApplication.Lock '请看讲解Application(CountWeb) = Application(CountWeb) + 1 '累加器,点击数加1Application.UnLockResponse.Write "WEB服务器关闭重启前该页的点击总数为: " & Application(CountWeb)%></BODY></HTML>运行这个程序时,对大部分的人来说,只有一台机器,既是Web服务器,又是客户端。
第7章 Application和Session对象

• 在上一篇中介绍了ASP常用组件的使用方法,在这 一篇中将介绍另两个非常实用且重要的ASP的内建 对象Application和Session。在ASP的内建对象中 除了用于发送、接收和处理数据的对象外,还有 一些非常实用的代表Active Server应用程序和单 个用户信息的对象。 • 先来看一下Application对象。在同一虚拟目录及 其子目录下的所有.asp文件构成了ASP应用程序。 非但可以使用Application对象,在给定的应用程 序的所有用户之间共享信息,并在服务器运行期 间持久的保存数据。而且,Application对象还有 控制访问应用层数据的方法和可用于在应用程序 启动和停止时触发过程的事件。
• Session其实就是访问者从到达特定主页到离开的 那段时间,每个访问者都会得到一个单独的 Session。同Application对象相比,Session对象 更接近于普通应用程序中的全局变量,全局变量 在程序执行的过程中始终有效,其他用户同时启 动该程序的另一个副本,该程序的两个实例使用 各自的全局变量,在两个进程之间不能互相访问。 在大多数情况下Session变量作为全局变量,实现 在所有页面中的共享信息。
7.2.2 Session对象的标志、结束和超时 设置
• 1.Session对象属性 • 2.Session对象方法
7.2.3 记录用户在网站上停留的时间
• 1.OnStart • 2.OnEnd • 3.Global.asa应用程序
7.2.4 设置Session对象的超时时间
• 1.第一次客户端访问服务器,会得到一个SessionID,以 非永久性的Cookie发送到客户端。 • 2.在这个浏览器关闭之前访问这个URL,浏览器都会把这 个SessionID发送到服务端,服务端根据SessionID来维持 对应此客户的服务端的各种状态,在web应用程序中可以对 这些Session进行操作。 • 3.服务端维护此SessionID的过期时间,IIS中可以设置 Session的超时时间。 • 4.当服务端发现某个SessionID已经过时,即某个客户已 经在设置的超时时间内没有再次访问此站点,就会将此 SessionID连同与此SessionID相关的所有Session变量删除。 • 5.客户端的浏览器在未关闭前,并不知道服务端已经将这 个SessionID删除,客户端依旧发送此SessionID的cookie 到服务端。
ASP的Application对象和Session对象

本章已经讨论了两个ASP对象:Application对象和Session对象,因此能够访问Application对象和Session对象提供的集合、方法、属性和事件。
本节将从程序设计的角度对这两个对象进行研究。
·当载入ASP DLL并响应对一个ASP网页的第一个请求时,创建Application对象。
该对象提供一个存储场所,用来存储对于所有访问者打开的所有网页都可用的变量和对象。
·当访问者首次从站点请求一个ASP页面时,为他创建一个Session对象,并保持有效直到缺省的超时周期(或由脚本确定的超时周期)。
该对象提供一个存储场所,用来存储仅仅对该访问者在会话的活动期间打开的网页可用的变量和对象。
图3-12(即图1-20)给出了用户的请求和服务器的响应在会话中的分布情况。
所有的会话都在ASP应用程序中。
3.3.1 ASP的Application对象成员概述本节说明Application对象的集合、方法和事件(Application对象没有属性)。
在下一节对Session对象(具有属性)进行同样的说明。
然后将继续探讨使用这些对象所完成的任务,更详细地说明每个对象的各成员如何进行工作。
1.Application对象的集合Application对象提供了两个集合,可以用来访问存储于全局应用程序空间中的变量和对象。
集合及说明如表3-3所示:表3-3 Application对象的集合及说明集合说明Contents没有使用<OBJECT>元素定义的存储于Application对象中的所有变量(及它们的值)的一个集合。
包括Variant数组和Variant类型对象实例的引用StaticObjects使用<OBJECT>元素定义的存储于Application对象中的所有变量(及它们的值)的一个集合2.Application对象的方法Application对象的方法允许删除全局应用程序空间中的值,控制在该空间内对变量的并发访问。
网站建设与管理项目六 使用ASP内置对象 Application和Session

Application对象基本的语法为 Application.数据集合|方法
表6-1 Application对象的数据集合表
数据集合名
Contents StaticObjct
功能简述 利用索引可以取回存在于服务器端的任一个由ASP Script所建立的 Application内的变量或对象的值
项目六 使用ASP内置对象 Application 和Session
项目背景
在浏览网页时,任何网页结束 的操作,都会导致变量生命周期的结束 ,例如:单击浏览器的“刷新”按钮, 或者关闭了浏览器,再重新打开它。 前面阶段已经讲过,ASP网页 的运行是没有状态的,而某些状态量有 时候对浏览者来说是很重要的。
Application_Onstart事件和Application_ OnEnd事件的处理程序,被放在文件Global.asa 中。它的用法如下所示。 <Script Language=”VBScript” RunAt=”Server”> Sub Application_OnEnd 相应的处理程序… Sub End
任务6.1 实现网站计数器 任务6.2 网页身份验证 任务6.3 获取网站当前在线人数
技术导读
本项目技术重点: ●
掌握Application对象相关属性、方法和事
件 ● 掌握Session对象相关属性、方法和事件 ● 会使用ASP的Global.asa文件实现用户的 在线统计
网站计数器通过ASP的内置对象Application 完成,Application对象是一个共享对象,通过在 Application对象中设置一个变量,作为网站计数 器变量,统计网站的单击数。
对于共享对象,首要处理的就是解决共 享的问题,比如两个人同时修改Application 对象的值,怎么处理先后次序? Application对象通过Lock与UnLock这 两个方法,来解决共享冲突问题。
第9课 Application对象与Session对象

【例9-4】在例9-2中使用Lock方法和Unlock方法 确保同一时刻只有一个用户可以修改和存储 Application对Байду номын сангаас中的变量,运行结果。 程序9_2.asp改为如下的代码:
可以在一般变量与Application变量之间互相赋值。 上述代码可以改写为:
<HTML> <HEAD><TITLE>使用Application变量</TITLE></HEAD> <BODY> <P><FONT size=4 face=方正舒体 color= blue> 使用Application变量<P> <% counter=Application("counter")+1 Application("counter")=counter %> <FONT size=6>您是第<%=counter%>位来客</FONT> </BODY> </HTML>
(1) Contents集合 Contents集合是Application对象所记录的所有非 对象变量,这是Application对象默认的集合,因此下 述两种格式是等价的: Application.Contents("变量名") Application("变量名") 其中,“变量名”是需要操作的Application变量 名称。
当用户浏览Web站点时,使用Session可以为每一 个用户保存指定信息。任何存储在用户Session中的信 息可以在用户调用下一个页面时取得。这就像是C语言 里的局部变量和函数之间的关系一样,一个Session的 值对于一个用户是相同的,对于不同的用户是不同的。 使用Session可以在ASP文件之间传递数值、字符串、 数组和对象。当用户在应用程序的页间跳转时,存储 在Session对象中的变量不会清除。 Session对象在很多方面与Application对象有着 相似性及可比性。虽然很相似,但是在本质上有着很 大的差别。比如对于同一个页面,不同的访问者可以 创建不同的Session,但是Application的值是相同的, 只被创建一次。
application和session和缓存的区别

Application, Cache, Session, Cookie, Viewstate 用法和区别分类: 2009-12-02 11:16 532人阅读评论(0) 收藏举报Application 任意大小,整个应用程序的生命周期,所有用户,服务器端。
Cache 任意大小,程序指定生命周期,所有用户,服务器端。
(比较灵活)Session 小量数据,某个用户活动时间+ 延迟时间(默认20分钟),单个用户,服务器端。
Cookie 小量数据,程序指定生命周期,单个用户,客户端。
ViewState 小量数据,一个web页面的生命期,单个用户,客户端。
====================================================================== ===1.Application:用于保存所有用户共用的数据信息。
在中类似的配置数据最好保存在Web.config文件中。
如果使用Application对象,一个需要考虑的问题是任何写操作都要在Application_OnStart事件(global.asax)中完成。
尽管使用Application.Lock和Application.Unlock方法来避免写操作的同步,但是它串行化了Application对象的请求,当网站访问量大的时候会产生严重的性能瓶颈。
因此最好不要用此对象保存大的数据集。
使用如下://存放信息Application["key"]=keyValue;//读取信息Object=Application["key"];2.Cache:使用如下://存放方式1Cache["key"]=keyValue;//与2同效//存放方式2//有多个重载,可指定依赖(变量、文件、目录、sql数据库表)//会覆盖具有相同key 的keyValueCache.Insert("key",keyValue);//存放方式3//可指定依赖(变量、文件、目录、sql数据库表)//当已存在相同的key时,操作失败,但也不会抛异常Cache.Add("key",keyValue,...);//读取方式Object keyValue=Cache["key"];Object keyValue=Cache.Get("key");//移除Cache.Remove("key");自动移除数据出于以下原因之一, 可以从缓存中移除数据:由于服务器上的内存不足,开始一个称为“清理”的过程。
Session和Application对象

• Session对象基础 • Session对象的使用 • Application对象基础 • Application对象的使用 • Session和Application对象的比较
目录
Part
01
Session对象基础
什么是Session对象
1 2 3
Session对象的作用域
用户特定
Session对象仅对当前用 户可见,不同用户的 Session数据是独立的。
页面特定
在一个会话期间,用户访 问的每个页面都可以访问 和使用该会话的Session 数据。
服务器特定
在一个Web应用程序中, 每个服务器进程都有自己 的Session对象,彼此之 间互不干扰。
THANKS
感谢您的观看
读取数据
读取存储的数据
应用程序中的任何页面或组件都可以通过 Application对象来读取存储的数据。
数据检索
根据需要,可以通过Application对象检索和获取存 储的数据。
数据绑定
可以将Application对象中的数据与页面元素进行绑 定,实现动态数据的展示。
数据同步问题
数据一致性
在多用户或多线程环境下,需要确保Application对象中 的数据同步,以避免数据冲突和不一致。
数据过期设置
设置过期时间
Session对象可以设置过期时间,当超过该 时间后,Session中的数据将被自动清除。
手动清除数据
Session对象可以手动清除某个键名对应的数据, 如`Session.Remove("key")`。
清除所有数据
Session对象可以清除所有存储的数据,如 `Session.Clear()`。
application与session对象

application与session对象1.application对象application对象保存了一个引用系统中的公有数据,一旦创建该对象,除非服务器关闭,否则application对象将一直保存,并为所有客户共享。
所有客户的application对象都是同一个,即所有客户共享这个内置的application对象例1.网页计数器( app_count.jsp )<%@ page contentType="text/html; charset=GB2312" %><html><head><title>count</title></head><body bgcolor="#ffffff"><%Integer num = (Integer)application.getAttribute("count");if(num == null){num = new Integer(1);application.setAttribute("count",num);}else{num = new Integer(num.intV alue()+1);application.setAttribute("count",num);}%>你是第<%=(Integer)application.getAttribute("count")%>访问本站的客户。
</body></html>在本例中涉及到了Integer包装类,该类常用方法如下:int intV alue()以int的形式返回Integer对象的值static String toString(int i)以一个新String对象的形式返回给定数值i的十进制表示static String toString(int I,int radix)返回数值i的基于给定radix参数进制的表示static int parseInt(String s)返回字符串s表示的整数数值,给定字符串表示的是十进制的整数static int parseInt(String s,int radix)返回字符串s表示的整数数值,给定字符串基于给定radix参数进制的整数static int valueOf(String s)返回一个新Integer对象,给定字符串表示的是十进制的整数static Integer valueOf(String s,int radix)返回一个新Integer对象,给定字符串基于给定radix参数进制的整数参考代码如下:public class IntegerTest{public static void main(String[] args){Integer I = new Integer(32);int i = I.intV alue();System.out.println("Integer = "+I+",int = "+i);String s = I.toString(i,2);System.out.println(s);i = Integer.parseInt("32");System.out.println(++i);i = Integer.parseInt("100000",2);System.out.println(i);I = Integer.valueOf("32");System.out.println("Integer = "+I);I = Integer.valueOf("f",16);System.out.println("Integer = "+I);}}例2.实现聊天室(app_simplechat.jsp )<%@page contentType="text/html; charset=GB2312"%><html><body bgcolor="#ffffff"><%if (request.getParameter("mywords") != null) {String mywords = request.getParameter("mywords");if(application.getAttribute("chat")==null)application.setAttribute("chat",mywords);else{mywords = (String) application.getAttribute("chat") + "<br>" + mywords;application.setAttribute("chat", mywords);}out.print((String) application.getAttribute("chat"));}%><form action="simplechat.jsp" method="POST"><input type="text" size="30" name="mywords" value="I like chat"/><input type="submit" name="submit" value="提交"/></form></body></html>2.session对象该对象是由服务器端自动创建的,用于保存每个用户的信息,以跟踪每个用户的操作状态。
第十一课Application对象和Session对象

教学课题:Application对象和Session对象教学目标:1、掌握Application对象的各种运用2、掌握Session对象的各种运用教学重点、难点:1、掌握Application、Session对象的各种运用教学对象:新老动态网页学生教学方法:边讲边演示法。
教学课时:2课时教学过程:I、引入新课回顾以前所学内容以及作业。
II、教授新课任务一、Application对象的使用1)Application的定义方法:Application(<变量名称>)=变量名称Set Application(<对象名称>)=对象名称2)还原Application方法变量名称=Application(<变量名称>)Set对象名称=Application(<对象名称>)或者Application(<变量名称>)= Application(<变量名称>)+13)实例代码<% Application(“Counter”)= Application(“Counter”)+1 %><%= Application(“Counter”)%>任务二、网站计数器的实例改进(1)如果有两个用户同时访问此网页,执行Application("Counter") = Application("Counter")+1语句时,可能取得相同的Counter变量值,经过加1处理后,也得到相同的计数值,从而导致两个用户只增加一次技术的情况发生。
(2)Counter1.asp中没有保存计数值,一旦Web服务器停止工作,则计数值将丢失。
即使Web服务器一直支持工作,Application对象本身也是有生命周期的,每隔一段时间没有访问Application对象,Application对象的数据将丢失。
下面将分别解决这两个问题:1)可以使用Application.Lock 和Application.Unlock对象锁定,从而避免两个用户同时访问Application对象。
08.第八章 APPLICATIONS对象与SESSION对象

第八章APPLICATIONS对象与SESSION对象1-1Application对象Application对象的用途是记录整个网站的信息,例如上站人数、在先名单、意见调查或在线票选统计等。
由于ASP程序中的变量在程序重新执行之前会恢复为空,无法记录上次执行完毕的值,因此,倘若我们想统计上站人数,计算器变量在网站被重新拜访时就会恢复为空,根本无法进行统计,这时,我们必须使用Application对象来记录计数器变量在上次执行完毕时的值,才能进行累计。
当有数个浏览者同时寸取网页时,Application对象可以用来记录不同浏览器端共享的变量,因为无论有几个浏览者同时存取网页,都会值产生一个Application对象的实例。
请注意,Application对象默认的生命周期起始与Web服务器开始执行时,终止与Web服务器结束执行时,或超过20分钟没有任何浏览器读取网页。
集合:Contents:此集合包含所有非对象变量,这时Application对象默认的集合,因此倘若我们要存取Application对象记录的变量Counter,可Application.Contents(“Counter”)或者Application(“Counter”).StaticObjects:此集合包含所有对象变量,在Global.asa文件中使用<OBJECT>标记所建立。
方法:Contents.RemoveAll: 删除Contents集合内的所有变量。
Contents.Remoe(Item):从Contents集合内擅长Item所指定的变量,Item可以是字符串或整数,若Item为整数,那么这个证书所代表的四索引值。
Lock(加锁)禁止其他浏览器端修改Application对象记录的变量值。
UnLock:(解锁)允许其他浏览器端修改Appliction对象记录的变量值。
事件:Application_OnStart:在建立Application对象的时候会产生这个事件。
实验4 Application对象Session对象

实验4 Application对象Session对象
一、实验目的
1.掌握JSP的Application对象Session对象对象的用法,基本掌握JSP的开发技巧。
2.在JDK和Eclipse环境下,完成下列实验。
二、实验要求:
1.独立完成实验
2.书写实验报告书
三、实验内容:
1.请仔细阅读下列程序语句,理解每条语句的作用。
源程序清单如下:
2.上述计数器当进行刷新时也会自动加1,试编写程序count.jsp ,实现防刷新文本计数器。
刷新后不加一,防止刷新。
3.编写程序register.htm 和register.jsp ,做一个用户注册的界面,要求对用户填写的部分进行合法性检验,然后提交到register.jsp 进行注册检验,若用户名为user 开头的,就提示“该用户名已被注册”,若用户名为admin ,就提示“欢迎您,管理员”,否则,就显示“注册成功”。
四、实验结果:
本实验比较简单,主要使用了application和session对他们
两个的使用加深了理解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上一讲中,我们学习了Request对象的Form数据集合、QueryString数据集合和ServerVariables 数据集合。
在继续下面的学习之前,建议你先轻松一下,因为接下来要介绍的Application 对象相对比较抽象,刚开始理解起来恐怕会不辨东西。
切记:当你找不到北时,便不要过多考虑Application对象到底是什么东西?还是一句老话,先学会使用它。
一、了解Application对象。
为了提神,我们先看一个计数器的例程(你应该运行它以便于理解):先编辑一个wuf16.htm文件:<html><body>记录某个页面的点击数示例:<a href="wuf17.asp">wuf17.asp</a></body></html>wuf17.asp的代码如下:<% @ LANGUAGE = VBScript %><% 'wuf17.asp - 记录某一页面的访问数(计数器原理)Option ExplicitDim CountWebCountWeb = Request.ServerVariables("SCRIPT_NAME")'这样保证每个页面都有一个唯一的变量, 避免混乱%><HTML><BODY><%Response.Write CountWeb & "<Br><Br>" & vbcrlfApplication.Lock '请看讲解Application(CountWeb) = Application(CountWeb) + 1 '累加器,点击数加1Application.UnLockResponse.Write "WEB服务器关闭重启前该页的点击总数为: " & Application(CountWeb)%></BODY></HTML>运行这个程序时,对大部分的人来说,只有一台机器,既是Web服务器,又是客户端。
那么你只能想象这样一种境况了:你的这两个主页文件放在很远的Web服务器上,而如潮水般的国内外用户正通过浏览器访问它们。
每个用户点击一次,Application(CountWeb) 的值就加1,而且只要存放文件wuf17.asp的服务器没有关闭,Application(CountWeb)就将一直累加下去。
但是注意,如果服务器关闭后重启,则Application(CountWeb)将重新从0开始计数(我晕,我说我的页面访问数怎么老是一位数)。
为了避免这种永远从零开始的计数情况,你必须要在服务器关闭之前将Application(CountWeb)的值保存起来,下次需要时再取出来,就能够顺序累计下去了,具体如何做,且听N回后分解。
接下来的问题,就是Application.Lock、UnLock是什么意思?刚才我们做了一个假设,大量的用户正在访问该页面,而每一个用户的点击都会发生Application(CountWeb)加1,想想看,这样不就乱套了(什么!想不出,那肯定是你的主页终日只有你一个人赞助),所以得有个先来后到的规则。
当某一用户访问该页面,需要修改Application(CountWeb)的值时,使用Lock方法加锁,避免其他用户修改,修改完后,再解锁。
从上例中您是否已看出,Application对象提供给所有用户共享信息(Application(CountWeb)),它所面向的是所有用户(每个用户的访问都会导致计数器加1)。
Application对象还有两个事件,Application_OnStart事件和Application_OnEnd事件(您可千万别晕,这只是面向对象编程语言中起步的概念),使用时语法如下:<SCRIPT LANGUAGE=VBScript RUNAT=Server>Sub Application_OnEnd‘当WEB服务器关闭时,将激活Application_OnEnd事件‘也就是程序将执行放在这里的代码‘因此服务器关闭前我们可以在这里将wuf17.asp中Application(CountWeb)的值‘保存起来,如放在一个文本文件中。
End SubSub Application_OnStart‘当第一个用户浏览ASP网页时,将激活Application_OnStart事件,而以后其他用户浏览时,就不发生这一事件了‘也就是程序将执行放在这里的代码‘因此可在这里读出保存在文本文件中Application(CountWeb)的值。
End Sub</SCRIPT>下面通过一个实例来说明如何使用事件,该程序的作用是统计站点所有页面的总点击数。
文件wuf18.asp的代码(站点内其他页面文件与这个文件类似):<% @ LANGUAGE = VBScript %><% Option Explicit‘站内所有页面文件都应包括这句<!--#include file="wuf19.asp"-->%><!--#include file="wuf19.asp"--><HTML><BODY>在服务器关闭重启之前站点所有页面总点击数: <%= Application("CountAll") %></BODY></HTML>文件wuf19.asp的代码:<% ' wuf19.aspApplication.LockApplication("CountAll") = Application("CountAll") + 1Application.UnLock%>文件wuf18.asp与wuf19.asp放在同一目录下。
文件global.asa的代码:注意:事件处理程序必须以名为“global.asa”的文本文件存盘,而且必须放在虚拟路径的根目录下(一般就是与index.htm或default.htm文件放在同一目录下,例如:以我的机器为例,就绝对路径而言,global.asa放在c:\InetPub\home下,而wuf18.asp和wuf19.asp放在c:\InetPub\home\asp下),同一虚拟路径只允许有一个global.asa文件存在。
<SCRIPT LANGUAGE=VBScript RUNAT=Server>'global.asa - wuf18.asp 在下载包中的文件名为18global.asa,使用时要改名。
Sub Application_OnStart‘当第一个用户浏览网页时,置计数器初值为0,‘而以后其他用户浏览时,不再执行以下代码Application.LockApplication("CountAll") = 0Application.UnLockEnd Sub</SCRIPT>浏览wuf18.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 - wuf20.asp 在下载包中文件名为20global.asaSub Session_OnStartSession("In") = Now ‘函数Now取得当前时间End SubSub Session_OnEndSession("Out") = NowApplication.LockApplication("Out") = Session("Out")Application("In") = Session("In")Application(“Out”).UnLockEnd Sub</SCRIPT>文件wuf20.asp:<%@ Language=VBScript %><HTML><BODY><% 'wuf20.aspResponse.Write "默认Timeout设置:" & Session.Timeout & "分钟<Br>"Session.Timeout = 1Response.Write "您进入本站的时间:" & Session("In") & "<Br>"Response.Write "请在1 分钟后刷新本页" & "<Br><Br>"if Not IsEmpty(Application("Out")) thenResponse.Write "您上次进入本站的时间:" & Application("In") & "<Br>"Response.Write "您上次离开本站的时间:" & Application("Out") & "<Br>"Response.Write "浏览时间(分钟):" &_Datediff("n",Application("In"),Application("Out")) & "<Br><Br>"。