配色: 字号:
《ASP动态网页设计》第7章ASP内置对象
2023-05-24 | 阅:  转:  |  分享 
  
3. 记忆力强计算机的存储器类似于人的大脑,可以“记忆”(存储)大量的数据和信息,在计算的同时,还可以把中间结果存储起来,供以后使用。学习目
标1. 掌握Request对象的属性与方法以及集合的使用。2. 掌握Response对象的属性与方法以及集合的使用。3. 掌握通过
Server对象的属性和方法,访问服务器信息。4. 理解如何在服务器运行期间保存所有用户的共享信息。5. 明确Session对象的
功能与使用方法,以及与Application对象的区别。7.1 Request对象在网页设计中的应用 7.2 Response
对象在网页设计中的应用 7.3 Server对象 7.4 Application对象 7.5 Session对象 7.1.1
Request对象的属性与方法 7.1.2 Request.Form集合 7.1.3 Request.QueryStrin
g集合 7.1.4 Request. ServerVariables集合 7.1.1 Request对象的属性与方法1.??R
equest.TotalBytes属性Request对象只提供了一种TotalBytes属性。该属性用来获取客户端接收到的所有数据
的字节大小,实际编程中该属性很少使用。<%@LANGUAGE=0022VBSCRIPT" CODEPAGE="936"%> l><%ReservedBytes=request.TotalBytesresponse.write "已经从客户端接
收到"&ReservedBytes&"个字节。"%>以上程序代码演示了如何利
用此属性获得从客户端接收到的字节数。2. Request.BinaryRead方法 Request对象只提供了一种方
法,即BinaryRead方法。这种方法并不常用,它以二进制的方法来获取客户端浏览器采用POST方式传送的数据,并将所取得的数据保
存在指定的数组中。 7.1.2 Request.Form集合【任务引入】动态网页最大的优势在于能提供交互平台,而交互平台的实现往
往需要依赖于表单,下面我们就完成一个比较简单的交互注册平台,来理解表单是如何制作以及表单信息是如何提交的。【任务目标】了解表单中常
用元素的使用以及服务器获取这些元素信息的方法。【任务内容】设计一个简单的用户信息获取平台,要求服务器能够获取用户的用户名、密码、性
别、爱好、职业、出生日期、个人留言等资料。【任务分析】要实现这个功能平台,需要分成两个步骤来完成。1. 设计制作表单输入界面
在该界面中,需要用户输入用户名、密码、性别、爱好、职业、出生日期、个人留言等资料,分别要使用表单项目中的文本字段、密码字段、复
选框、单选按钮、列表菜单、文本区域以及提交、重置按钮等。 该界面网页是在客户端执行,所以可以设计成HTML文件。2. 完成表
单信息提交网页 该网页要具有依次能够承接表单界面中各表单项目内所输入的信息的功能,并且能够输出显示。表单项目中的信息需要由
服务器来承接,所以,该网页一定要是服务器端的ASP文件。【结果示范】 7.1.3 Request. QueryString集合【
任务引入】表单信息的提交除了可以使用Form集合外,还可以使用QueryString集合,下面我们具体来看看QueryString
集合如何传递表单数据。【任务目标】掌握运用QueryString集合传递表单数据的方法。【任务内容】运用上述Form集合中的实例,
运用QueryString集合完成相同表单。【任务分析】要使用QueryString集合来获取表单信息,则该网页的表单应采用GET
方式提交数据。【结果示范】 【任务小结】从程序运行范例中我们可以看到,QueryString集合中包含了使用GET方式传送到Web
服务器的各个表单值,并且这些值会在浏览器URL地址栏中表现为用问号连接的一串文本。7.1.4 Request. ServerVa
riables集合【任务引入】Request对象的ServerVariables集合中包含了系统的各种环境变量信息,以及随HTTP
请求和响应一起传递的HTTP Headers信息。通过访问该集合中的有关元素,编程者可以获取关于浏览器和服务器的各种信息,以及其他
重要的数据。比如:发出请求的浏览器类型的信息、IP地址、构成请求的HTTP方法以及ASP脚本参与的HTTP事务的重要数据等。【任务
目标】掌握运用ServerVariables集合来获取常用环境变量信息的方法。【任务内容】要求获取网页虚拟路径、远程主机、服务器名
称或IP地址、服务器连接端口、服务器HTTP版本、服务器软件版本。【任务分析】ServerVariables集合引用的一般格式为:
Request.ServerVariables(server environment variable)【程序代码】<%@LANG
UAGE="VBSCRIPT" CODEPAGE="936"%>网页虚拟路径:<%=request.Ser
verVariables("path_info")%>
远程主机名称:<%=request.ServerVariables(
"Remote_Host")%>
服务器名称或IP:<%=request.ServerVariables("server_n
ame")%>
服务器连接端口:<%=request.ServerVariables("server_port")%> >服务器HTTP版本:<%=request.ServerVariables("server_protocol")_%>
服务
器软件版本:<%=request.ServerVariables("server_software")_%>

【结果示范】 【任务小结】我们还可以通过以下程序依次列出所有已格式化的HTTP标头、所有未格式化的HTTP标头以及R
equest.ServerVariables集合内的每个变量名称和值。 <%@LANGUAGE="VBSCRIPT" COD
EPAGE="936"%><% for each item in request.ServerVariab
les response.Write("

"&item&"") response.Write(reque
st.ServerVariables(item)) next%> Response对象的作用是
向浏览器输出文本、数据和cookies,并可重定向网页,或用来控制向浏览器传送网页的动作。用户可以使用该对象将服务器端的数据用HT
ML的格式发送到客户端的浏览器。该对象的功能与Request对象的功能恰恰相反。Request对象用于得到用户提交的数据,而Res
ponse对象用于将服务器端的数据发送到用户的浏览器,是实现动态的基础。 7.2.1 Response对象的概述 7.2.2
Response.Write方法 7.2.3 Response.Redirect方法 7.2.4 Cookies集合 7.2.
1 Response对象的概述 Response对象具有多个属性和方法,并有一个Cookies集合。Response对象的
属性和方法见下表。1.??Buffer属性Buffer属性是指示是否缓冲页输出。一般格式为:Response.Buffer [=F
log]Flog用于指定页面输出时是否要用缓冲。实例:<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%
>Buffer实例<% for i=asc("a
") to asc("z") response.Write chr(i)&"
" next%> >2.??Expires属性Expires属性用来设置浏览器缓存页面的时间长度。Number属性值的单位是分钟,数据类型是数值型,
可以直接指定页面过期的时限。一般格式为:Response.Expires=Number如果用户在请求页面时,缓存里的页面没有过期,
则直接使用该页面来满足用户的请求;如果该页面已经过期,则需要服务器重新生成一个新的页面来反馈给用户,并重新设置页面的时间长度。 3
.??ExpiresAbsolute属性该属性是指定缓存于浏览器中的页面到期的日期和时间。Date是指定页面的到期日期,Time是
指定页面的到期时间。一般格式为:ExpiresAbsolute [=[Date][Time]]通常在实际运用中,该属性可以设置网页
的精确有效时间。比如在“网上投票”活动中,就需要对投票页面设定精确的过期时间,表明投票结束。4.??Status属性Status属
性是指定服务器返回的状态行的值,可以用来处理服务器返回的错误。在调试过程和向客户端返回有关错误信息时,Status属性特别重要。一
般格式为:Response.Status=StatusDescriptionResponse对象的Status属性并不修改Head
er,但可以用来限定一个HTTP响应的状态码。5.??Clear方法Clear方法是删除缓存区中的所有HTML输出。当Respon
se对象的Buffer属性被设置为True时,则在使用Clear方法后,在服务器的缓存区将被设置为空,所有数据会丢失。一般格式为:
Response.Clear6.??Flush方法 Flush方法是将服务器缓存区内的所有数据发送到客户端的浏览器上。由于
设置了Response对象的Buffer属性为True,那么所有的ASP程序将在服务器端完全解释后才被发送到浏览器中,如果编程人员
需要控制在某个断点,当符合特定条件时将已经完成的页面发送到客户端,就可以使用这种方法来完成。一般格式为:Response.Flus
h7.??End方法End方法是终止当前ASP页面的执行,使用该方法后的所有数据将不被解释,服务器将直接断开与客户端的数据传输,或
者处理该页面以外的程序。如果Response对象的Buffer属性为True,这时End方法立即把缓存中的内容发送到客户端并清除缓
存区。所以要取消所有向客户端的输出,可以先清除缓存区,然后再利用End方法。通常当用户在上网的时候,要强行进入管理员页面时,系统就
会提示没有访问权限,这就是利用End方法实现的。一般格式为:Response.End8.??BinaryWrite方法Binary
Write方法是不经任何字符转换就将指定的信息写到HTTP输出。Data是写在HTTP输出的数据,该方法用于书写非字符串信息,如客
户端应用程序所需的二进制数据。一般格式为:Response.BinaryWrite data9.??AppendToLog方法 A
ppendToLog方法是把字符串添加到Web服务器日志条目的末尾。由于IIS日志中的字段由逗号分隔,所以该字符串中不能包含逗号。
字符串最大长度为80个字符。一般格式为:Response.AppendToLog string 7.2.2 Response.W
rite方法【任务引入】2008北京奥运会令全世界人民充满期待,我们经常可以看到距离奥运会开幕的倒计时,现在我们就来制作一个倒计时
程序。【任务目标】熟练运用Response.Write方法输出服务器端数据到客户端。【任务内容】以2008北京奥运会开幕为终止时间
,制作一个倒计时程序。【任务分析】倒计时程序,关键是要获取当前时间距离终止时间的剩余天数,剩余小时数,剩余分钟数和剩余的秒数。程序
中可以通过DateDiff()函数和DateAdd()函数来计算时间差。 【结果示范】 【任务小结】① 函数DateDiff()【
任务小结】② 函数DateAdd()7.2.3 Response.Redirect方法【任务引入】比如我们在注册或登录某个论坛时
,填写好资料后往往会进入一个过渡网页,显示“注册成功”或“登录成功”,“3秒钟后会自动跳转到论坛首页,若未跳转请点击×××”。这里
的自动跳转其实就是通过Redirect方法来实现的。【任务目标】熟练运用Response.Redirect方法实现网页自动跳转。【
任务内容】Response.Redirect方法可用来将客户端的浏览器重新定向到一个新的网页。【任务分析】格式:response.
redirect URL由于Response.Redirect的作用是跳转并打开新页面,并且该语句是立即生效的,所以该语句必须放在
没有任何数据输出到浏览器之前。换句话来说,Response.Redirect可放在脚本程序的之前,或者在页面的首行加上
“<%Response.Buffer=True%>”语句,将输出存放至缓存区。【结果示范】 7.2.4 Cookies集合 【任
务引入】一旦我们上网,在我们的计算机系统盘中,往往会发现大量的Cookies文件,它是怎样产生的,有什么作用,又是怎样使用的?通过
该任务对其作初步了解。【任务目标】了解Cookies文件的写入和读取方式。【任务内容】写入和读取用户访问网站时留下的个人信息。【任
务分析】当客户第一次连接到某个Web站点时,Web服务器可以利用Response对象的Cookies集合将有关信息写入到客户端磁盘
的Cookies文件中,而当这个客户再次连接到该Web站点时,便可以利用Request对象的Cookies集合来取得这个保存在客户
端Cookies中的信息。【任务小结】在上述程序中我们使用了Cookies的某些属性:① Cookies(name).Expire
s :该属性用来指定Cookie的生命周期,决定Cookie的有效时间,当达到这个时间后就自动消失。该有效时间可以确定为绝对时间,
比如具体某天的某个时刻;也可以确定为相对时间,如上述程序中Date()+7 。② Cookies(name).Domain :指定
只有某个Domain(网域)可以访问这个Cookies。③ Cookies(name).HasKeys :用来确定某个Cookie
是否有Key(键)。④ Cookies(name).Path :指定只有特定路径可以访问这个Cookies。⑤ Cookies(n
ame).Secure :指定是否采取预防措施以确保Cookies的安全。 Server对象提供了服务器端最基本的属性及方法
,它能够完成许多服务器端的重要功能。一般的服务器系统其工具是以对象模型的方式保存的,通过Server对象的使用,可以访问服务器的信
息。服务器提供一系列的对象模型,如数据库连接组件Adodb,访问模型如连接数据库Connection,记录集Recordset等。
Server对象有自己的属性和方法,通过这些属性和方法的使用来达到对服务器对象的使用。 7.3.1 Server.CreateO
bject方法 7.3.2 Server.MapPath方法 7.3.3 Server.Execute方法 7.3.4 Se
rver.Transfer方法 7.3.5 Server.HtmlEncode方法和Server. UrlEncode方法 Se
rver.CreateObject方法是Server对象最为重要的方法之一,可用来创建已经注册到服务器上的某个ActiveX组件的
实例,实现一些仅靠脚本语句难以实现的功能。比如对数据库的连接和访问、对文件的存取、电子邮件的发送和活动广告的显示等。在脚本程序代码
中实际应用组件时,必须首先为所需的组件创建一个对象实例,并将其指派给一个对象变量,然后再通过这个变量来引用该对象实例的集合、属性或
方法。创建一个已在服务器上注册的ActiveX Server组件的实例。语法如下:Set 对象 = Server.CreateOb
ject(“ActiveX组件”)7.3.1 Server.CreateObject方法 【任务引入】在大部分的时候,我们通常使
用程序的虚拟路径,但由于ASP要求我们在访问文件夹、文件或数据库时必须使用实际路径,所以此时可以使用Server.MapPath(
path)方法,将path指定的虚拟路径转换为实际路径。【任务目标】熟练运用Server.MapPath(path)方法实现虚拟路
径到实际路径的转换。【任务内容】获取指定文件的父目录、当前目录、根目录及物理路径。【任务分析】将指定的虚拟路径转换为服务器上相应的
物理路径,这里的虚拟路径是指在Web服务器中建立的虚拟目录。语法如下: 真实的路径?= Server.MapPath("Strin
g")String是用于指定虚拟路径的字符串。MapPath 方法不支持相对路径语法(.)或(..),但将“\”字符与“/”视为相
同。还可以使用Request对象的服务器变量PATH_INFO映射当前文件的物理路径。 7.3.2 Server.MapPath
方法【程序代码】<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> >MapPath<% response.Write "父目录:"&server.MapP
ath("../") %>
<% response.Write "当前目录:"&server.MapPath("./") %
>
<% response.Write "根目录:"&server.MapPath("/") %>
<% respon
se.Write "网页实际路径为:"&server.MapPath("7-9.asp") %>
>【结果示范】 Server.Execute方法是IIS 5.0新增的功能,用途类似程序语言中的函数调用,也就是说,用户可以在AS
P程序中使用此方法调用Path指定的ASP程序,待被调用的程序执行完毕之后再回到原来的程序,继续执行。由于Server.Execu
te方法具有过程调用的功能,所以可以利用此特点将经常要实现的一些功能编写成对应的ASP程序,在需要使用时直接调用即可。 7.3.3
Server.Execute方法Server.Transfer方法的作用是将ASP程序的当前控制权转移至另一个指定的ASP程序
,并且即使转移之后的程序已经执行完毕,控制权也不会返回到原来的程序中。需要特别强调的是:利用Response对象的Redirect
方法也可以将控制权转移到所指定的网页,但它与Server.Transfer方法的不同在于,后者在转移控制权后,各种内置对象(如Re
quest对象的集合、Application变量及Session变量)的值都会被保留下来;而前者在转移控制权后,各种内置对象的值并
不会被保留。因此,在大多数情况下,使用Server.Transfer方法转移控制权将比Response.Redirect方法效率更
高。 7.3.4 Server.Transfer方法 Server对象提供Server.HTMLEncode和Server.UR
LEncode两个方法可以进行字符串编码。Server.HTMLEncode(string)方法可以对string编码,使它不会被
浏览器解释为HTML语法;Server.URLEncode(string)方法对string编码,以放入QueryString返回
服务器。7.3.5 Server.HtmlEncode方法和Server. UrlEncode方法 在ASP程序设计中,
通常将一个网站虚拟目录及其子目录下的所有ASP文件称为一个ASP应用程序。从程序编写角度上来看,一个单独的ASP页面就如同一个完成
特定功能的过程或者函数。而一组相关的ASP页面组合在一起,就构成了一个完整的应用程序。7.4.1 Application对象综述
7.4.2 Application对象运用实例 载入ASP DLL并响应对一个ASP网页的第一个请求时,创建Appli
cation对象。该对象提供一个存储场所,用来存储对于所有访问者打开的所有网页都可用的变量和对象,可以使用Application
对象在给定的应用程序的所有用户之间共享信息。基于 ASP 的应用程序同所有的 .asp 文件一样在一个虚拟目录及其子目录中定义。因
为多个用户可以共享 Application 对象,所以必须要有 Lock 和 Unlock 方法以确保多个用户无法同时改变某一属性
。7.4.1 Application对象综述 任务7.8【任务引入】我们平常在网站上经常会发现例如上站人数统计、在线名单、意见调
查、在线投票等网站信息和活动,这些功能的实现通常都会用到Application对象。【任务目标】通过实例了解Application
对象的用途和使用方法。【任务内容】设计制作一个简单的站点计数程序。【任务分析】① 使用Counter变量计数,每增加一个访客就把C
ounter变量的值加1。② 为了避免多位访客同时上站而Counter变量只加1的情况出现,需要在修改计数值前锁定Applicat
ion对象,修改完毕后再释放,以保证不会出现漏加情况。③ 为了使计数值长期有效,将结果写入文本。【结果示范】 【任务小结】① 使用
FileSystemObject对象的OpenTextFile方法打开文件,返回值为TextStream对象实例,文件的名称为Co
unterFile,用于读取和写入,若文件不存在,则予以建立。② 调用Counts函数从Counter.txt文件读取计数器的数值
,加1后再写入文件,并返回计数器的数值。利用Server对象的CreateObject方法不能创建ASP的内置对象,同时ASP本身
所提供的5个对象也是不允许再将其定义为Application对象或者Session对象的。<%Set Application("v
ar1")=SessionSet Application("var2")=RequestSet Application("var3
")=ResponseSet Application("var4")=ServerSet Application("var5")=
ApplicationSet Application("var6")=ObjectContext%>以上代码完全是错误的。7.4.
2 Application对象运用实例1. 用于实现Application数组<%@LANGUAGE="VBSCRIPT" CO
DEPAGE="936"%><% dim new_array() Redim new_array(15)
new_array(0)="老虎" new_array(1)="大熊猫" new_array(2)="金丝猴" ''把数组new_a
rray复制到一个Application数组new_array application.Lock() application("n
ew_array")=new_array application.UnLock() ''重定向到7-11b.asp文件 respon
se.Redirect("7-11b.asp")%>2. 用于修改Application数组元素值<%
@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><% ''把该applicati
on数组复制给一个临时的数组 temp_array=application("new_array") ''修改临时数组元素的值
temp_array(1)="丹顶鹤" response.Write(temp_array(0)&temp_array(1))
application.Lock() ''将临时数组传回application数组 application("my_arra
y")=temp_array application.UnLock()%>3. 聊天室简单应用<%@
LANGUAGE="VBSCRIPT" CODEPAGE="936"%><% mywords=reque
st.Form("mywords") ''每个聊天的人将说的话赋给一个变量 application.Lock() applica
tion("chat_content")=application("chat_content")&"
"&mywords
''每个用户都将自己的话加入 response.Write application("chat_content") ''输出每个人
说的话 application.UnLock()%> Session其实指的就是访问者从到达某
个特定主页到离开为止的那段时间。每一个访问者都会单独获取一个Session。在Web应用程序中,当一个用户访问该应用时,Sessi
on类型的变量可以供这个用户在该Web应用的所有页面中共享数据;如果另一个用户也同时访问该Web应用,他也拥有自己的Session
变量,但两个用户之间无法通过Session变量共享信息,而Application类型的变量则可以实现站点多个用户之间在所有页面中共
享信息。7.5.1 Session对象综述 7.5.2 启动和终止Session对象 7.5.3 Session对象运用实例
同Application对象相比,Session对象更接近于普通应用程序中所说的全局变量。全局变量在程序执行过程中始终
有效,其他用户同时启动该程序的另一个副本(copy)时,该程序的两个实例各自使用自己的全局变量,在两个进程之间不能相互访问。在绝大
多数情况下用Session变量作为全局变量,实现在该应用的所有页面中共享信息。通常较少利用Application对象,它可以在多用
户间共享信息。7.5.1 Session对象综述任务7.9【任务引入】除了Application对象外,还有Session对象,
它也是用来记录浏览器端的变量,但它们之间存在差别,Application对象记录的是所有浏览器端共享的变量,而Session对象记
录的是个别浏览器端专用的变量,下面我们通过任务来具体了解一下。 【任务目标】体会Session对象与Application对象的差
别,掌握其使用方法。【任务内容】为上个任务中制作的简单站点计数程序增加防止恶意刷新功能。【任务分析】① 程序计数部分与上个任务完全
相同。② 上个任务中,只要访客连续按下“刷新”按钮,访客人数就会一直累计增加,这显然不合理,可以使用Session对象特性来解决这
个问题。 【任务小结】 该任务程序与前任务程序相比,在Counts函数后增加了一个IF语句,该代码段的意义
是将目前打开的浏览器的访客人数记录在Session对象的Counter变量中,由于Session变量在浏览器结束之前不会消失,因此
,若是浏览者没有关闭浏览器,纯粹点击“刷新”按钮,那么Session变量是不会重新计算而使访客数增加的。7.5.2 启动和终止S
ession对象Global.asa 文件是一个非常重要的文件,一旦创建了一个应用程序,在工程项目的下面就会自动加上此文件。在这个
文件中含有Application对象和Session对象的事件处理过程。一个空白的Global.asa文件结构如下: <%@ La
nguage=”VBScript” runat=”Server” %><%Sub Application_onStartEnd S
ubSub application_onEndEnd SubSub Session_onStartEnd SubSub Sessi
on_onEndEnd Sub%>1.Global.asa 文件初始化Session_OnStart 事件在服务器创建新会话时发生
。服务器在执行请求的页之前先处理该脚本。Session_OnStart 事件是设置会话期变量的最佳时机,因为在访问任何页之前都会先
设置它们。 尽管在Session_OnStart事件包含Redirect或End方法调用的情况下Session对象仍会保持,然而服
务器将停止处理Global.asa文件并触发Session_OnStart 事件的文件中的脚本。 2.??Session_OnSt
art 事件Session_OnEnd 事件在会话被放弃或超时的时候发生。会话可以通过以下三种方式启动 : ① 一个新用户请求访问
一个 URL,该 URL 标识了某个应用程序中的 .asp 文件,并且该应用程序的 Global.asa 文件包含 Session
_OnStart 过程。 ② 用户在 Session 对象中存储了一个值。 ③ 用户请求了一个应用程序的 .asp 文件,并且该应用程序的Global.asa 文件使用 标签创建带有会话作用域的对象的实例。 3.Session_OnEnd 事件 如何最准确地统计在线用户数?① 首先要设置好global.asa 文件② 统计在线人数的页面<%@ Language="VBScript" %>在线用户统计现有<%= Application("ActiveUsers") %> 名用户在线与您共舞!

献花(0)
+1
(本文系大高老师首藏)