Application对象与Session对象
- 格式:doc
- 大小:21.50 KB
- 文档页数:5
ASP的六大内部对象1.Request对象Request对象把客户信息保存在几个集合中,供ASP应用使用。
2.Response对象用来控制向客户返回的HTML的内容,有若干属性和方法。
3.Application对象Active Server应用程序是虚拟目录及其子目录下的所有文件,即一个WEB。
可以使用Application对象在应用软件的所有用户中共享信息,并可以在服务器运行期间持久地保存数据。
他有一些控制访问应用层数据的方法和事件。
4.Session对象Active Server使用会话设置为使用应用程序的单个用户持久保持数据。
5.Server对象用于执行在服务器中的操作6.FileSystem和TextStream对象FileSystem和TextStream对象可用于建立对文件系统的访问,并提供顺序访问文件的机制。
ASP六大对象介绍Application对象Application对象是个应用程序级的对象,用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保持数据。
Application的属性:方法如下:Application对象没有内置的属性,但是我们可以自行创建其属性。
<% Application("属性名")=值%>其实大部分Application变量都存放在Contents集合中,当你创建一个新的Application变量时,其实就是在Contents集合中添加了一项。
下面两个脚本是等效的:<% Application("greeting")="hello!" %> 或<% Application.contents("greeting")="hello!"由于Application变量存在集合里,所以如果想要全部显示,其方法我们已经多次使用,例如For Each循环。
Request与session与application的区别:(1)request的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值(获取到之后一般都需要进行向下类型转换,将属性值转换为真正的对象)。
setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法。
(2). request的getParameter方法的作用是获取到客户端通过表单或url 请求参数所发送过来的参数值,是客户端与服务器端之间的交互,服务器端要想获取到客户端发送过来的数据,就需要使用getParameter方法来获取。
没有与getParameter方法对应的setParameter方法。
(3). request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的request 对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存放的任何数据。
(4) session对象内数据的存活范围也就是session对象的存活范围(?只要浏览器不关闭,session对象就会一直存在?),因此在同一个浏览器窗口中,无论向服务器端发送多少个请求,session对象只有一个。
5. application(应用对象):存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。
在整个服务器运行过程当中,application对象只有一个。
6. request、session以及application这3个对象的范围是逐个增加的:request 只在一个请求的范围内;?session是在浏览器窗口的范围内?;application 则是在整个服务器的运行过程中。
6.5 Application对象Application 对象的主要功能是用来存储和获取可以被所有用户之间进行共享的信息,它具有集合、方法和事件,但不具备属性。
一般的网站上都有一些应用程序,比如有BBS、电子商务等。
而每个应用程序往往有是由多个ASP文件构成。
这些ASP文件是整个应用程序中的子程序,彼此不是完全独立的,存在着某种关系。
而Application对象负责对网站上各应用程序间共享的程序进行管理,并对应用程序的整个周期的设置进行控制。
由于ASP程序中的变量在程序重新执行之前都会恢复位Empty,所以上次运行的结果无法保存在有关的变量中。
而Application对象中的数据可以被使用者所共享。
这样,我们可以使用Application对象记录在程序运行期间不同用户所需要共享的数据。
下面是ASP的Application对象的一些特性:⑴数据可以在Application内部共享,因此可以覆盖多个用户。
⑵一个Application包含事件可以触发某个Application脚本。
⑶一个对象的例子可以被整个Application共享。
⑷个别的Application可以用Internet Service Manager来设置而获得不同属性。
⑸单独的Application可以隔离出来在他们自己的内存中运行,即如果一个人的Application遭到破坏,也不会影响其他人。
⑹可以停止一个Application而不会影响到其他应用。
一个网站可以有不止一个的Application对象。
例如可以根据针对于个别任务的一些ASP 文件创建个别的Application对象,也可以创建了一个Application对象来用于全部公用用户,而再次创建另外一个来限制在网络管理员的范围。
还可以在位于同一台服务器的不同网站创建不同的Application对象。
6.5.1 Application对象的设置一个Application的根目录由Internet Service Manager来设定,这时此目录以及其子目录均属于这个Application。
浅谈page,request,session,application四种范围JaveWeb四种主要的范围:1.page: page表⽰页⾯范围。
页⾯范围对应的时间段为:从客户访问⼀个jsp⽂件开始,到这个jsp⽂件执⾏结束。
2.request: request表⽰请求范围。
请求范围时间段为:从客户请求访问⼀个jsp⽂件开始,到这个jsp返回响应结果结束,如果这个jsp⽂件把请求转发给其他web组件,那么知道其他web组件返回响应结果结束。
请求范围是指服务器响应⼀次客户请求的过程,从servlet容器接收到⼀个客户请求开始,到返回响应结果结束, 请求范围与servletRequest和servletResponse相对应。
3.session: session表⽰会话范围。
会话范围对应着整个会话的⽣存周期。
会话范围是指浏览器与⼀个web应⽤进⾏⼀次会话的过程。
具体实现上,会话范围与httpsession对象的⽣命周期相对应。
因此web组件只要共享同⼀个httpsession对象也就能共享会话范围内的数据。
举例说明: 浏览器进程第⼀次请求访问应⽤中⼀个⽀持会话的⽹页,servlet容器驶⼊寻找请求中表⽰sessionID的cookie,由于还不存在这样的cookie,所以⼀个新的会话开始了,创建⼀个httpsession的对象,然后为它分配唯⼀的sessionID,并把id作为Cookie 放在http响应结果中,当浏览器接收到http响应后,会把sessionID保存的cookie保存在客户端。
浏览器进程继续访问应⽤的任意⼀个⽀持会哈德页⾯,http请求会包含表⽰sessionID的Cookie,servlet容器试图寻找http请求中sessionID的cookie,找到后可以找到与sessionID匹配的httpSession。
4.application(应⽤)范围: web应⽤范围对应整个web应⽤的⽣存周期。
介绍一下ASP的内置对象及作用ASP(Active Server Pages,活动服务器页面)是一种用于开发基于服务器的Web应用程序的技术。
在ASP中,有许多内置对象可用于处理Web页面请求和响应。
这些内置对象提供了丰富的功能来处理会话管理、数据库访问、文件操作、浏览器交互等操作。
下面将介绍ASP中常用的内置对象及其作用。
1. Request对象:用于获取来自浏览器的HTTP请求信息,如表单数据、查询字符串、cookie等。
可以通过此对象获取用户输入的数据并进行处理。
例如,使用Request对象可以获取通过表单POST请求传递的数据。
2. Response对象:用于向浏览器发送HTTP响应信息,比如输出HTML文本、设置Cookie、重定向页面等。
通过此对象可以将处理结果返回给用户的浏览器。
例如,使用Response对象可以输出动态生成的HTML页面。
3. Server对象:提供了许多与服务器相关的功能,比如创建对象、执行文件、获取服务器变量和属性等。
可以通过此对象来操作服务器资源,如访问文件系统、执行数据库查询等。
例如,使用Server对象可以将生成的HTML页面保存为静态文件。
4. Session对象:用于存储和管理用户会话数据。
会话数据是在用户访问网站时跨多个页面的数据。
可以使用Session对象保存用户登录信息、购物车内容等与用户相关的数据。
例如,使用Session对象可以在不同页面间共享数据。
5. Application对象:用于存储和管理应用程序级别的数据。
应用程序级别的数据是在应用程序启动时创建并一直保持在内存中的数据。
可以使用Application对象共享数据和状态信息。
例如,使用Application对象可以实现计数器,记录网站的访问次数。
6. Server.MapPath方法:用于将相对路径转换为服务器上的物理路径。
可以通过此方法获取文件系统路径,读取和写入文件,以及其他需要物理路径的操作。
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>标记建立的对象和变量。
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类型,需要进行转换后才能使用。
上一讲中,我们学习了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>"End Ifif IsEmpty(Session("Out")) thenResponse.Write "刷新前和刷新后Session(""Out"")的值都为空" & "<Br>"End If%></BODY></HTML>当用户第一次浏览网页时,发生Session_OnStart事件,程序记录用户本次进入网页的时间,而此时不会发生Session_OnEnd事件,故Application("Out")值为空,程序不会显示浏览时间。