第十一课Application对象和Session对象
- 格式:doc
- 大小:31.00 KB
- 文档页数:2
Servlet内置对象:session、request、response、application 1.request 对象
request 对象是 javax.servlet.httpServletRequest 类型的对象。
该对象代表了客户端的请求信息,主要⽤于接受通过 HTTP 协议传送到服务器的数据。
(包括头信息. 系统信息. 请求⽅式以及请求参数等)
2.response 对象
response 代表的是对客户端的响应,主要是将 JSP 容器处理过的对象传回到客户端。
response 对象也具有作⽤域,它只在 JSP 页⾯内有效。
3.session 对象
session 对象是由服务器⾃动创建的与⽤户请求相关的对象。
服务器为每个⽤户都⽣成⼀个 session 对象,⽤于保存该⽤户的信息,跟踪⽤户的操作状态。
session 对象内部使⽤ Map 类来保存数据,因此保存数据的格式为 “Key/value”。
session 对象的 value 可以是复杂的对象类型,⽽不仅仅局限于字符串类型。
4.application 对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则 application 对象中保存的信息会在整个应⽤中都有效。
与 session 对象相⽐,application 对象⽣命周期更长,类似于系统的“全局变量”。
一、供全体应用程序使用的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变量,该用户可以对这个变量进行修改而其他人不能对其修改。
上一讲中,我们学习了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服务器,又是客户端。
《11.2 Application、Session和Cookie对象》1. 目标概述[2分钟] (2)2. 回顾[5分钟] (2)3. 课程知识点讲解 (2)3.1. 应用程序状态(Application State)[20分钟] (2)3.2. 会话状态(Session对象)[20分钟] (3)3.3. 客户端Cookie存储状态[20分钟] (4)3.4. Global.asax文件[20分钟] (5)4. 小结[3分钟] (5)5. 考核点 (6)6. 作业答案 (6)7. 技能提升[90分钟] (7)8. 扩展练习 (8)9. 学生问题汇总 (8)10. 教学后记 (8)本节目标⏹本节中将讲述如下主要内容:✧Application对象✧Session对象✧Cookie对象⏹通过教学使学生掌握Application、Session、Cookie对象及其应用。
本节重点⏹Application对象⏹Session对象⏹Cookie对象本节难点⏹授课课时⏹6课时教法建议1.目标概述 [2分钟]本节主要讲述Application、Session、Cookie对象及其应用。
2.回顾 [5分钟]回顾上一节的相关知识。
3.课程知识点讲解3.1.应用程序状态(Application State)[20分钟]引入:主题:多数在基于Web的应用程序中需要处理一些跨请求的操作,且在同一Web应用程序的多个用户之间共享数据和变量,那么这些数据称为状态(State)。
保存数据到Application内建对象的语法格式为:Appication[“变量名称(即键名)”]= 对象名称[示例讲解]示例11.2.1利用Application对象创建一个统计网站点击次数的计数器。
[练习]练习11.2.1 请利用Application对象实现一个统计网页当天点击率的计数器。
3.2.会话状态(Session对象)[20分钟]引入:主题:Session对象的功能由HttpSessionState类提供,每个用户的会话事件都具有该类的一个实例。
教学课题: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对象。
Application对象Application对象概述Application对象是一个Web应用程序级的对象,是Web站点某个虚拟目录下子目录包含的网页、脚本程序的集合,通常由互相关联的html文件、asp文件和Global.asa文件组成。
每一个Web站点可以设置多个虚拟目录,也就是说,每个Web站点上可以多个Web应用程序。
Application中所包含的数据可以在整个Web站点中被所有用户使用,并且可以再网站运行期间持久保存数据。
Application对象和Session对象有很多相似之处,他们的功能都是用于在不同的ASP页面之间共享信息。
两者的主要区别如下:●应用范围不同。
Application对象是针对所有用户,可以被多个用户共享。
一个用户接收到的Application变量可以传递给另外的用户。
而Session 对象是针对单一用户,某个用户无法访问其他用户的Session变量。
●存活时间不同。
由于Application变量是多个用户共享的,因此不会因为某一个用户甚至全部用户离开而消失,一旦建立了Application变量,就会一直存在,直到网站关闭或默认的20分钟没有客户请求访问。
而Session变量会随着用户离开网站而被自动删除。
Application对象是网站建设中经常使用的一项技术,利用Application 对象可以完成统计网站的在线人数、创建多用户游戏及多用户聊天室等功能,其功能类似于一般程序设计语言中“全局变量”。
Application对象的语法格式:Application.collectio n︱methot其中,collection、methot分别表示Application对象的集合和方法。
使用时,两个参数只能选一个。
Application对象包括Contents和StaticObjects两个数据集合。
1、Contents数据集合Contents数据集合允许程序取得用户能够使用的所有Application对象,但不包括<object>标记建立的对象和变量。
第八章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对象的时候会产生这个事件。
Application对象课程引入:HTTP通信协议不会保留客户端的用户状态,用户可以通过网页间数据共享来保留用户信息,以便正确地执行Web应用程序。
网站的数据共享分为两种:共享给网站所有用户:在程序中可以使用Application变量进行共享,例如目前在线的用户数。
每位用户的专用数据:在程序中可以使用Session变量进行保存,例如登录用户的权限。
可以将Application对象所包含的数据视作Web应用程序的公共全局变量;而Session对象包含的数据可以被看作Web应用程序的个人局部局变量一、Application对象(一)Application对象的相关概念: 应用程序是单个Web 服务器上的某个虚拟目录及其子目录范围内的所有网页、程序、图片等的总和。
可以把Application对象视为公共场所中的公告牌,任何一个用户写入其中的信息都可以被其他用户看到。
Application对象是共有的对象,所有的用户都可以对某个特定的Application对象进行修改。
利用Application对象,可以创建网站计数器等常用应用程序。
“Application”:应用程序的启动及退出第一个用户访问站点时,应用程序启动,并创建一个Application对象。
创建成功后,整个应用程序中都可以使用该对象。
除非应用程序关闭,否则对象一直存储在内存中。
(二)设置和读取Application对象变量的值(1)设置Application对象变量的值语法格式:Application[“变量名称”]=数据;或Application.Add(“变量名称”,数据);参数说明:Application对象变量的形式不但可以是简单变量,还可以是数组,但不能在Application对象中存储的内建对象。
(2)获得Application对象变量的值通过对象变量名称访问对象变量语法格式:变量= Application[“变量名称”]通过Application[“变量名称”]得到的是object类型,需要进行转换后才能使用。
教学课题: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(<变量名称>)+1
3)实例代码
<% 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对象。
改进程序如:application.asp
2)解决Application对象丢失的问题:
首先解决这种问题的方法通常是将数据保存在硬盘中。
CreateTextFile 方法
建立一个文本文件,并返回一个TextStream对象。
Set txt=fs.CreateTextFile(counter_file,true)
counter_file是counter.txt文件的绝对物理路径,以它为参数调用CreateTextFile()方法可以在指定目录下创建counter.txt文件。
参数true表示如果counter.txt文件存在,则将其覆盖。
OpenTextFile方法
打开一个文本文件,并返回一个TextStream对象。
counter_file=Server.MapPath("counter/counter.txt")
Set txt = OpenTextFile(counter_file)
可以使用TextStream对象的ReadLine()方法读取一行数据,使用WriteLine()方法写入一行数据,代码如下:
Application("Counter")=txt.ReadLine
Txt.WriteLine(Application("counter"))
代码如:application.asp、counter.asp、counter1.asp、counter_pic.asp
任务三、Session对象的使用
每个访问ASP网页的用户都拥有一个Session对象,用于记录用户的相关信息,但是所有客户端只有一个公用的Application对象。
1)Session的定义方法:
Session(<变量名称>)=变量名称
Set Session (<对象名称>)=对象名称
2)还原Session方法
变量名称=Session (<变量名称>)
Set对象名称=Session (<对象名称>)
代码实例如:login.asp、check.asp、check1.asp
III、小结
今天主要是讲解了Application对象和Session对象的使用方法。
IV、布置作业
1、做一个简易网站计数器
2、做一个管理员登陆,将登陆的用户名和密码保存到Session中。