WEB开发技术 第三章
3.2 Application与 Server对象
From,吴教育
Email,wujiaoyu@21cn.com
Q Q,188128997
课程引入与回顾
? Response 对象
? Request 对象
目标
? Application 对象
? Server对象
3.3 Application对象
Application 对象是一个比较重要的对象。在同一虚拟目
录及其子目录下的所有,asp 文件构成了 ASP 应用程序。
我们可以使用 Application 对象,在给定的应用程序的
所有用户之间共享信息,并在服务器运行期间持久的保
存数据。而且,Application 对象还有控制访问应用层数
据的方法和可用于在应用程序启动和停止时触发过程的
事件。利用 Application对象的这一属性,可以方便地创
建聊天室和网络计数器等常用网页应用程序。
一、属性
虽然 Application 对象没有内置的属性,但我们可以使用以
下句法设置用户定义的属性也可称为集合。
Application(,属性 / 集合名称, )= 值
建立 Application 对象的属性
我们可以使用如下脚本声明并建立 Application 对象的属性。
< %
Application(“MyVar”) =,Hello”
Set Application(“MyObj”) = Server.CreateObject(“MyComponent”)
%>
说明:
一旦我们分配了 Application 对象的属性,它就会持久地存
在,直到关闭 WEB 服务器服务使得 Application 停止。由
于存储在 Application 对象中的数值可以被应用程序的所有
用户读取,所以 Application 对象的属性特别适合在应用程
序的用户之间传递信息。
全部显示 Application对象
绝大部分 Application变量存放于 contents集合中,当你创
建一个新的
application变量,其实就是在 contents集合中添加了一项,
例如,下面两个脚本是等效的:
<%Application(“Mycompany”)=”北京迈至科网络,%>
<%Application.contents(“Mycompany”)=”北京迈至科网
络,%>
由于 Application变量存放在集合里面,那么如果想要全部
显示,用 For Each循环。
<%
FOR EACH thing IN Application.Contents
Response.Write(“<BR>”&thing &
Application.Contents(thing))
NEXT
%>
二、方法
Application 对象有两个方法,它们都是用于处理多个用户
对存储在 Application 中的数据进行写入的问题
1,Lock 方法禁止其他客户修改 Application 对象的属性。
Lock 方法阻止其他客户修改存储在 Application 对象
中的变量,以确保在同一时刻仅有一个客户可修改和存取
Application 变量。如果用户没有明确调用 Unlock 方法,
则服务器将在,asp 文件结束或超时后即解除对 Application
对象的锁定。
让我们来看看下面这段用 Application 来记录页面访问次数
的程序,
< %
Dim NumVisitsNumVisits=0
Application.LockApplication(“NumVisits”) = Application(“NumVisits”) + 1
Application.Unlock
%>
欢迎光临本网页,你是本页的第 < %=
Application(“NumVisits”) %> 位访客 ! 将以上脚本保存在
你的,asp 文件中,就轻而易举地给你的页面添加了一个计
数器。
2、和 Lock 方法相反,Unlock 方法允许其他客户修改
Application 对象的属性。
在上面的例子中,上述例子中,Unlock 方法解除对象
的锁定,使得下一个客户端能够增加 NumVisits 的值。
三、事件
1,Application_OnStart
Application_OnStart 事件在首次创建新的会话 ( 即
Session_OnStart 事件 ) 之前发生。当 WEB 服务器启动并
允许对应用程序所包含的文件进行请求时就触发
Application_OnStart 事件。 Application_OnStart 事件的
处理过程必须写在 Global.asa 文件之中。
语法
Application_OnStart 事件的语法如下,
< SCRIPT LANGUAGE=ScriptLanguage
RUNAT=Server>
Sub Application_OnStart.,,
End Sub
< /SCRIPT>
2,Application_OnEnd
Application_OnEnd 事件在应用程序退出时于
Session_OnEnd 事件之后发生,Application_OnEnd 事
件的处理过程也必须写在 Global.asa 文件之中。
说明 1:
不能在 Application 对象中存储 ASP 内建对象。例如,下
面的每一行都返回一个错误。
< %
Set Application("var1")=Session
Set Application("var2")=Request
Set Application("var3")=Response
Set Application("var4")=Server
Set Application("var5")=Application
Set Application("var6")=ObjectContext
%>
说明 2
若您将一个数组存储在 Application 对象中,请不要直接更
改存储在数组中的元素。例如,下列的脚本无法运行。
< % Application(“StoredArray”)(3) =,new value” %>
这是因为 Application 对象是作为集合被实现的。数组元素
StoredArray(3) 未获得新的赋值。而此值将包含在
Application 对象集合中,并将覆盖此位置以前存储的任何
信息。建议您在将数组存储在 Application 对象中时,在检
索或改变数组中的对象前获取数组的一个副本。
对数组操作
在对数组操作时,您应再将数组全部存储在 Application 对
象中,这样您所做的任何改动将被存储下来。下列的脚本对
此进行演示。
---asp8a.asp---
< %
dim MyArray()
Redim MyArray(5)
MyArray(0)="hello"
MyArray(1)="some other string"
Application.Lock
Application("StoredArray")=MyArray
Application.Unlock
Response.Redirect "asp8b.asp"
%>
---asp8b.asp---
< %
LocalArray=Application("StoredArray")
LocalArray(1)=" there"
Response.Write LocalArray(0)&LocalArray(1)
Application.Lock
Application("StoredArray")=LocalArray
Application.Unlock
%>
Application与 session
与 Application 对象具有相近作用的另一个非常实用的
ASP 内建对象就是 Session。我们可以使用 Session 对象
存储特定的用户会话所需的信息。当用户在应用程序的页之
间跳转时,存储在 Session 对象中的变量不会清除,而用
户在应用程序中访问页面时,这些变量始终存在。当用户请
求来自应用程序的 Web 页时,如果该用户还没有会话,则
Web 服务器将自动创建一个 Session 对象。当会话过期或
被放弃后,服务器将终止该会话。
3.4 Server 对象
? Server 对象充当 HTTP 服务的接口并且 提
供对 HTTP 服务器的属性和方法 的访问。
HTTP 服务器
Server 对象
ASP 文件
HTTP 服务器的
属性和方法
CreateObject 方法 3-1
<HTML>
<BODY>
<%
Set TypeofBrowser = Server.CreateObject("MSWC.BrowserType")
TypeofBrowser = Request.ServerVariables("HTTP_USER_AGENT")
Response.Write (TypeofBrowser)
%>
</BODY>
</HTML>
如果使用 Netscape访问网站,则 TypeofBrowser为,
Mozilla/4.04 [en] (Win95; I; Nav)
Internet Explorer
CreateObject 方法 3-2
可以由 CreateObject方法的 BrowserType组件检测的
一些浏览器特性:
属性 描述
Browser 浏览器的类型 – Internet Explorer,Netscape

Version 浏览器的完整版本
Frames 检测浏览器是否支持框架
Cookies 检测浏览器是否支持 Cookies
VBScript 检测浏览器是否支持客户端 VBScripts
注释,可能无法获得该输出 。
原因是 BrowsCap.ini文件不
包含有关尝试该输出所使用
的浏览器的信息 。
<%
Set x = Server.CreateObject ("MSWC.BrowserType")
Response.Write("浏览器的类型是, " & x.Browser & "<BR>")
‘确定浏览器的名称
Response.Write("浏览器的版本是, " & x.Version & "<BR>")
‘ 确定浏览器的版本
Response.Write("浏览器支持 VBScript," & x.VBScript &
"<BR>")
‘确定浏览器是否支持 VBScript
Response.Write("浏览器支持 Cookies," & x.Cookies)
‘ 确定浏览器是否支持 Cookies
%>
CreateObject 方法 3-3
HTMLEncode 方法
<%
Response.Write Server.HTMLEncode("<H1> 是标题标记的示例 ")
%>
ch3ex9.asp
查看
源代码
<%
Response.Write ("<H1> 是标题标记的示例 ")
%>
ch3ex10.asp
MapPath 方法
? MapPath 方法 由服务器用于将路径映射到
服务器上的信息。
Server.MapPath ("虚拟目录或文件名 ")
? 如果虚拟目录 MyPages 的路径是
C:\Inetpub\wwwroot\MyDirectory。
<%Response.Write
Server.MapPath("/MyPages")%>
将返回
C:\Inetpub\wwwroot\MyDirectory
<%
Response.Write
Server.MapPath(Request.Server
Variables("PATH_INFO"))
%>
<%
Response.Write
Server.MapPath("/Chapter 3")
%>
MapPath 方法 使用示例
confirm.asp
<%
Response.Write
Server.MapPath("confirm.asp")
%> ch3ex12.asp
ch3ex13.asp
URLEncode 方法
URLEncode 方法返回一个字符串, 该串是
对输入值 string进行 URL编码, 对于在 URL
中无效的所有字符, 如?, &和空格, 都
转换为相应的 URL转义符 。 语法是:
Server.URLEncode ("string")
<%
Response.Write
Server.URLEncode("http://10.1.6.150.95/Chapter3/Ch3Ex14.asp")
%>
<HTML>
<BODY>
<%
firstname = Server.URLEncode ("Graham Browne")
password = Server.URLEncode ("monkey")
%>
<A
HREF="http://10.1.6.150.95/Chapter3/Ch3Ex15.asp?firstn
ame=<%=firstname%>">确认注册 </A>
</BODY>
</HTML>
URLEncode 方法 使用示例
ScriptTimeOut 属性
属性 描述
ScriptTimeout 指定脚本在终止之前可以在服务器上
运行的时间长度,单位为秒。
语法,
Server.ScriptTimeout = Numseconds
ScriptTimeOut 属性使用示例
<p>ScriptTimeout 属性的默认值:
<%=Server.ScriptTimeout %>秒
<%
Server.ScriptTimeout = 100
Response.Write ("<p>ScriptTimeout 属性修改后的
值," & Server.ScriptTimeout & "秒 ")
%>
总结 2-1
? #INCLUDE 指令用于将文件包含到另一
个 ASP文件中。
? Application 对象是内置 ASP 对象,表示
ASP 应用程序的实例。它包括与应用程
序相关的所有方法和集合。
? Server 对象是 ASP 六个内置对象之一 。
总结 2-2
? Server 对象充当 HTTP 服务的接口并且 提
供对 HTTP 服务器的属性和方法 的访问。
? Server 对象 的方法用来以服务器特定的方
法格式化数据、管理其他网页的执行、管
理外部对象和组件的执行以及处理错误。