第5章 ASP的内置对象及其_第1页
第5章 ASP的内置对象及其_第2页
第5章 ASP的内置对象及其_第3页
第5章 ASP的内置对象及其_第4页
第5章 ASP的内置对象及其_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章ASP的内置对象及其应用

ASP的内置对象

ASP的内置对象及简要说明对

象功

明Response负责将数据信息传送给客户端Request负责从客户端获取数据信息Server负责控制ASP的运行环境Application负责存储数据以供多个用户使用Session负责存储单个用户的信息5.1Response对象Response对象的主要功能是将数据信息从服务器端传送数据至客户端浏览器。Response对象的方法包括Write、Redirect、Clear、End、Flush、BinaryWrite、AddHeader和AppendToLog等共8种。Response对象的属性包括Buffer、ContentType

、AddHeader、Expires、ExpiresAbsolute、Status、CacheControl、和IsClientConnected等。Response对象的数据集合为Cookie。

5.1.1Response对象的方法Response对象的常见方法方法用途Write将指定的字符串写到当前的HTTP输出Redirect使浏览器立即重定向到指定的URLClear清除缓冲区中的所有HTML输出End使Web服务器停止处理脚本并返回当前结果Flush立即发送缓冲区的输出BinaryWrite不经任何字符轮换就将指定的信息写到HTML输出AddHeade用指定的值添加HTML标题Appendtolog在Web服务器记录文件(Log)末尾加入用户数据记录1.Write方法Write方法是Response对象最常用的方法,它可以把数据信息从服务器端发送到客户端,在客户端动态地显示信息。Write方法的基本语法为:

Response.Writestring参数string可以是字符串或变量,其中数据或变量可以是任意数据类型。如果string参数是一个字符串时,一定要把它放在“””中。Write方法还有一种简化方式,语法如下:<%=string%>

例5-1<html><head><title>Response.Write使用方法示例</title></head><body><%Dimuser_nameuser_name=“小明”'正常运行时,服务器应从客户端获取user_name的值Response.Write“早上好!”'输出一个字符串Response.Write"今天是:"&Date()'Date()是日期函数,&是字符串连接符Response.Write"欢迎你:"&user_name'use_name是一个变量%></body></html>Response.Write使用方法示例2.Redirect方法Response对象的Redirect方法可以使浏览器重新定位到另一个页面上。语法:

Response.Redirectstring

参数string为URL字符串,用于定位Web站点的位置,例如可以使用如下语句将浏览器定位到搜狐主页。

<%Response.Redirect""%>Redirect方法的应用使用Redirect方法的优点在于

,可以把比较复杂的网页分成多个子网页,甚至可以把这些子网页放在不同的目录中,然后由Redirect来判断需要跳到哪一个子网页

。Response对象的Redirect方法有些类似于HTML的超链接,但有不同于超链接。超链接需要用户用鼠标单击后才能跳转,而Redirect方法不需要用户操作而直接跳转。Redirect方法在很多地方都有应用,如在线考试系统,当考试时间到后,不管考生是否做完都将系统直接引导到结束页面。3.End方法

Response对象的End方法主要作用是告诉浏览器数据已经全部下载完毕,停止处理ASP文件。语法:

Response.End

例5-4程序End.asp源代码

<%Response.Write"现在时间是:"Response.EndResponse.WriteTime()%>End方法在进行程序调试时也是非常有用的,例如可以先对Response.End之前的语句进行调试,调试正确后在将Response.End往后放,再调试一部分,依次类推,直至调试完毕。4.Clear方法格式:Response.Clear说明:

Clear方法的主要作用是清除缓冲区中的所有html输出,但该方法只清除响应正文而不清除响应标题。可以用Clear方法处理错误情况。但是如果没有将Response.Buffer设置为True,则该方法将导致运行时错误。<%response.writenow()response.clear '以上程序到此全被清除response.writernd()%>

其结果如图6-4所示。执行response.writenow()时显示当前的日期和时间,但执行response.clear时日期和时间被清除,所以在页面上显示的是一随机数。5.1.2Response对象的属性

Response对象的常见属性属性说明Buffer指定是否使用缓冲页输出ContentType指定响应的HTTP内容类型Expires指定在浏览器上缓冲存储的页面距过期还有多长时间ExpiresAbsoluet指定缓存于浏览器中的页面的确切到期日期和时间Status属性用来处理服务器返回的错误IsClientConnected只读属性,用于判断客户端是否能与服务器相连属性

(1)Buffer。格式:Response.Buffer=True/False说明:

Buffer属性指示是否有缓冲页输出,值为True或False,默认值为False。当为True时,页面输出到缓冲区;值为False时,页面直接输出到客户端浏览器。当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了Flush或End方法后,服务器才将响应发送给客户端浏览器,服务器将输出发送给客户端浏览器后就不能再设置Buffer属性。因此应该在.asp文件的第一行调用Response.Buffer。(2)Charset。格式:Response.Charset(CharsetName)说明:

Charset属性将字符集名称附加到Response对象中content-type标题的后面,用来设置服务器响应给客户端的文件字符编码。对于不包含Response.Charset属性的ASP页,content-type标题将为:content-type:text/html。我们可以在.asp文件中指定content-type标题,如:

<%Response.Charset="gb2312")%>将产生以下结果:

content-type:text/html;charset=gb2312注意:

无论字符串表示的字符集是否有效,该功能都会将其插入content-type标题中。且如果某个页包含多个含有Response.Charset的标记,则每个Response.Charset都将替代前一个CharsetName。这样,字符集将被设置为该页中Response.Charset的最后一个实例所指定的值。(3)Expires。格式:Response.Expires[=number]说明:

Expires属性指定了在浏览器上缓冲存储的页距过期还有多长时间。如果用户在某个页过期之前又回到此页,就会显示缓冲区中的页面。如果设置response.expires=0,则可使缓存的页面立即过期。这是一个较实用的属性,当客户通过ASP的登录页面进入Web站点后,应该利用该属性使登录页面立即过期,以确保安全。(4)ExpiresAbsolute。格式:Response.ExpiresAbsolute[=[date][time]]

说明:

与Expires属性不同,ExpiresAbsolute属性指定缓存于浏览器中的页面的确切到期日期和时间。在未到期之前,若用户返回到该页,该缓存中的页面就会被显示。如果未指定时间,该主页在当天午夜到期;如果未指定日期,则该主页在脚本运行当天的指定时间到期。如<%Response.ExpiresAbsolute=#Dec30,200816:30:15#%>指定了页面在2008年12月30日下午4点30分15秒到期。(5)status。格式:Response.Status=StatusDescription说明:

服务器要响应的状态行的值。Response.Status="状态描述字符串",字符串可以为一个三位整数或一串说明文字组成,但必须放在<html>之前。【例6.5】<%Response.expires=0Response.Expiresabsolute=Now()-1Response.AddHeader"pragma","no-cache"Response.AddHeader"cache-control","private"Response.CacheControl="no-cache“Response.Status=“测试status”%>Response对象5.2Request

对象

Request对象的主要作用是接收客户端浏览器提交的数据,与Response对象结合在一起使用实现客户端与服务器端的数据交换。集

合说

明Form获取客户端在FORM中填写的信息QueryString获取HTTP查询字符串中变量的值Cookies获取客户端浏览器的Cookies值ServerVariables获取服务器端环境变量的信息ClientCertificate获取客户端浏览器的身份验证信息Request对象的数据集合

5.2.2集合

1.Form集合

Form集合是Request对象最常用的数据集合。它用于获取用户填写在HTML表单里的信息,通常包括文本框、单选钮、复选框、多行文本、下拉列表、按钮等表单元素。其使用语法为:

Request.Form(String)[索引.计数]参数String是用来指定表单元素名称。在Form集合中的每个表单元素名称都对应于HTML中Form的输入内容。

语法进一步说明Request.Form(element)[(index)|.Count]参数element指定集合要检索的表格元素的名称。index可选参数,使用该参数可以访问某参数中多个值中的一个。它可以是1到Request.Form(parameter).Count之间的任意整数。Count集合中元素的个数

Form集合按请求正文中参数的名称来索引。Request.Form(element)的值是请求正文中所有element值的数组。通过调用Request.Form(element).Count来确定参数中值的个数。如果参数未关联多个值,则计数为1。如果找不到参数,计数为0。要引用有多个值的表格元素中的单个值,必须指定index值。index参数可以是从1到Request.Form(element).Count中的任意数字。如果引用多个表格参数中的一个,而未指定index值,返回的数据将是以逗号分隔的字符串。<html>

<head><title></title></head><body><p>请填写你的爱好</p><formmethod="POST"action="form.asp"><p><inputtype="text"name="hobby"size="20"><br><inputtype="checkbox"name="hobby"value="足球">足球<inputtype="checkbox"name="hobby"value="乒乓球">乒乓球</p><p><inputtype="submit"value="发送"name="B1"><inputtype="reset"value="重填"name="B2"></p></form><%ForEachiInRequest.Form("hobby")Response.Writei&"<BR>"Next%></body></html>例5-7<Html><Head><Title>Request实例1</Title></Head><Body><FormAction="Submit.asp"Method="Post"><p>*您的名字是:〈InputName="Name"Size=28><p>*您是一位:<SelectName="Sex"><Option>先生<Option>女士</Select>*您工作的是:<InputName="Work"><p>*您的意见是:<InputName="Build"Size=28><p><InputType=SubmitValue="提交"><InputType="Reset"Value="重设"></Form></Body></HTML〉Request实例:一个表单输入程序

被激活的程序当用户填写完表单按提交按钮后,就激活了服务器端的一个表单处理程序,这个处理程序将利用Request对象Form数据集合来获取用户填写在表单中的内容。这个被激活的程序的名字就填写在FORM中的ACTION属性中。例5-8<Html><Head><Title>Request实例2</Title></Head><Body><pAlign="Center"><FontFace="幼圆"Size="7"><b>谢谢<%=Request.Form("Name")%><%=Request.Form("Sex")%>的留言</b></Font><Hr><pAlign="Center"><FontFace="华文彩云">您的工作是<%=Request.Form("Work")%></Font><br><FontFace="隶书">并且我们记下了您的意见是<%=Request.Form("Build")%></p></Font></Body></Html>2.QueryString集合

QueryString集合的功能就是从查询字符串(QueryString)中读取用户提交的数据。语法:

Request.QueryString(变量名称)[(索引.记数)]例5-10<Html><Head><Title>密码验证</Title><Head><Body><FormMethod="GET"Action="login.asp"><pAlign="Center"><FontFane="隶书"Size="5">密码验证</Font></p><pAlign="Center">请输入姓名:<InputType="Text"Name="Name"Size="20"></p><pAlign="Center">请输入密码:<InputType="Password"Name="Password"

Size="20"></p><pAlign="Center"><InputType="Submit"Value="进入"Name="B1"><InputType="Reset"Value="重写"Name="B2"></p></Form></Body></Html>例5-10QueryString应用实例<Html><Head><Title>密码响应代码</Title></Head><Body><Center><h2><%d1=Request.QueryString("Name")d2=Request.QueryString("Password")Ifd2="963220"ThenResponse.Write"<FontFace=""华文行楷""Size=""7"">"&"密码验证通过!"&"</Font><hr>"Response.Writed1Response.Write":欢迎您来到这里。

"ElseResponse.Writed1Response.Write":对不起,您的密码不正确"EndIf%></Center></Body></Html>例

5-11文件login.asp的源代码

5.3

Cookies集合Cookies是一种送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在客户机与某个Web站点会话之间持久地保存数据。1.写入Cookies

当用户访问网站(服务器)时,服务器会先到客户机中去获取Cookies信息,如果Cookies信息不存在,就在客户机上创建一个,如果有,就将其读取出来,修改后再写回客户机,覆盖原有的Cookies。语法:

Response.Cookies("Cookies名称")[("键名值").属性]=内容(数据)

2.读取Cookies

如果用户要读取Cookies的时候,必须使用Request对象的Cookies集合。语法:

<%=Request.Cookies("Cookies名称")%>语法Response.Cookies(cookie)[(key)|.attribute]参数cookie指定要检索其值的cookie。key可选参数,用于从cookie字典中检索子关键字的值。attribe指定cookie自身的有关信息。如:HasKeys只读,指定cookie是否包含关键字。Expires:指定cookie的过期日期。若此项属性的设置未超过当前日期,则在任务结束后cookie将到期。例如:

Response.Cookies("CookieName").Expires=#January01,2015#语句设置了cookie的使用到期时间为“2015年1月1日”;而

Response.Cookies("CookieName").Expires=Date+365

设定cookie的过期时间为“cookie的创建时间+365天”。可以通过包含一个key值来访问cookie字典的子关键字。如果访问cookie字典时未指定key,则所有关键字都会作为单个查询字符串返回。例如,如果MyCookie有两个关键字,First和Second,而在调用Request.Cookies时并未指定其中任何一个关键字,那么将返回下列字符串。First=firstkeyvalue&Second=secondkeyvalue例5-13<%Response.Buffer=Truedata1=Request.Cookies("data1")Ifdata1=""Thendata1=EmptyResponse.Write"进入网页时,data1="&data1&"<br>"data1=data1+100Response.Write"网页结束时,data1="&data1&"<br>"Response.Cookies("data1")=data1%>Cookies应用实例:如果刷新一次网页

第一次访问显示结果

5.3.3Cookies的属性

Expires

这个属性可以给Cookies设置有效期,在这个期限内只要打开网页就可以调用被保存的Cookies,如果过了这个期限Cookies变自动被删除。例如,要删除一个名叫passtime的Cookies,只要将它的有效期设置为过去的日期即可。<%Response.Cookies("passtime").Expires="3/1/2001"%>HasKeys:指定cookie是否包含关键字。Path:若被指定,则cookie将只发送到对该路径的请求中。如果未设置该属性,则使用应用程序的路径。【例6.12】创建一个cookie然后输出。<%@language=VBScript%><%response.cookies("Merry")("name")="Merry"response.cookies("merry")("phone")="8975261"response.cookies("Merry")("old")="32"response.cookies("Merry")("password")="M1234"response.cookies("Merry").domain="www.M"response.cookies("Merry").path=getpathresponse.contenttype="text/HTML"%>cookie<html><head><title>response及request例</title></head><scriptlanguage="VBScript">functiongetpath()dimpath,pospath=request.ServerVariables("PATH_INFO")pos=InStrRev(path,"/")getpath=left(path,pos-1)endfunction</script></head><body><pre><h3>Informationofyou:</h3><%cookie="Merry"foreachkeyinrequest.cookies(cookie)response.writekey&"="response.writerequest.cookies(cookie)(key)&"<p>"next%></pre></body></html>

该例首先创建了一个名叫Merry的cookie字典,并为这个字典的关键字赋值。而response.cookies("Merry").path=getpath语句调用了一个叫getpath的函数。Getpath函数中:path=request.ServerVariables("PATH_INFO")语句调用了request的ServerVariables集合。调用ServerVariables时,若传入“PATH_INFO”,则会返回网页的“虚拟路径文件名称”;pos=InStrRev(path,"/")语句的作用是寻找符号“/”的位置。该程序运行结果如图7-6所示图6-6cookies示例5.4Server对象Server对象提供对服务上的方法和属性的访问。通过Server对象可以创建ActiveX组件。ActiveX组件是一些扩展ASP功能的对象。如通过需要访问数据库时,需要创建ADO组件。5.4Server对象1.属性ScriptTimeoutServer对象只有一个属性:ScriptTimeout。该属性用于设定超时值,即在脚本运行超过指定时间后作超时处理。5.4Server对象例子1设置脚本的超时:<%Server.ScriptTimeout=200%>例子2取回ScriptTimeout属性的当前值:<%response.write(Server.ScriptTimeout)%>

5.4Server对象

Server对象的方法方法说明Mappath方法将指定的相对的虚拟路径映射到服务器上相应的物理目录HTMLEncode将一个指定的字符按HTML的编码输出URLEncode将一个指定的字符串按URL的编码输出CreateObject用于创建已注册到服务器上的ActiveX组件的实例Mappath方法Mappath方法用于将指定的相对的虚拟路径映射到服务器上相应的物理目录上。

语法

:

Server.Mappath(string)

参数string是指定虚拟路径的文字字符串。CreateObject方法Server对象中的CreateObject方法是一个比较重要的方法,它用于创建已注册到服务器上的ActiveX组件的实例。语法:

Server.CreateObject(progID)

参数progID用于指定对象建立的类型,并且创建的组件可以是所有ActiveX能使用的内置组件。例如要建立一个组件用于处理数据库,在ASP文件中可以用如下的方法将创建的对象给一个变量:

<%setconn=Server.Createobject("ADODB.Connection")%>

其中ADODB是ASP服务器中用于处理数据库的一个组件,当创建一个组件后,可以利用其提供的属性和方法HTMLEncode方法HTMLEncode允许对特定的字符串进行HTML编码。格式:Server.HTMLEncode(string)说明:参数string为指定要编码的字符串。<%Response.write(“这是没有采用HTMLEncode方法的测试。<br>这里就另起一行,说明代码被执行。”)%><hr><%Response.writeServer.HTMLEncode(“这是对HTMLEncode方法的测试。<br>这里应该不会另起一行,也就是代码没有被执行了。”)%>

程序执行结果如图6-7所示。URLEncode方法URLEncode方法则是根据URL规则对字符串进行正确编码。格式:Server.URLEncode(string)说明:

string为待转化的字符串。该方法返回一个字符串,该串是输入值string的拷贝,但是在URL中无效的所有字符,如?、&和空格等都被转换为等价的URL条目。例如:<%Respones.Write(Server.URLEncode(“”))%〉的运行结果为: http%3A%2F%2Fwww%2Emicrosoft%2Ecom。Execute方法Execute方法可以调度另外一个ASP文件执行。在执行被调用的.asp文件后,控制权会返回原始的.asp文件。语法Server.Execute(path)Execute方法File1.asp:<%response.write("IaminFile1!<br/>")Server.Execute("file2.asp")response.write("IambackinFile1!")%>File2.asp:<%response.write("IaminFile2!<br/>")%>输出:IaminFile1!IaminFile2!IambackinFile1!5.5Application对象Application对象用于存储和访问来自任意页面的变量,类似Session对象。不同之处在于所有的用户分享一个Application对象,而session对象和用户的关系是一一对应的。5.5Application对象

Application对象是一个应用程序级的对象,利用Application对象可以在所有用户间共享信息,并且可以在Web应用程序运行期间持久地保存数据。

Application对象的方法方法说明Lock锁定事件UnLock解锁事件Application对象只有两种方法,即Lock方法和UnLock方法。Lock,主要用于保证同一时刻只有一个用户在对Application对象进行操作,也就是说使用Lock方法可以防止其他用户同时修改Application对象的属性,这样可以保证数据的一致性和完整性。当一个用户调用一次Lock方法后,如果完成任务,应该使用UnLock方法将其解开以便其他用户能够访问。UnLock方法通常与Lock方法同时出现,用于取消Lock方法的限制。例5-17<%Application.LockApplication("visits")=Application("visits")+1Application.Unlock%>Thispagehasbeenvisited<%=Application("visits")%>times!Application对象的方法应用示例:5.5.3Application对象的事件

Application对象的事件事件说明Application_OnStart事件在应用启动(application_OnStart事件)时发生Application_OnEnd事件在应用程序退出(Session_OnEnd事件)之后发生语法:<%SubApplication_OnStart

程序代码EndSubSubApplication_OnEnd

程序代码EndSub%>当你操作某个应用程序时,启动它,然后做些改变,随后关闭它。这个过程很像一次对话(Session)。计算机知道你是谁。也知道你在何时启动和关闭这个应用程序。但是在因特网上,问题出现了:web服务器不知道你是谁,也不知道你做什么,这是由于HTTP地址无法留存状态(信息)。ASP通过为每个用户创一个唯一的cookie解决了这个问题。cookie被发送到服务器,它包含了可识别用户的信息。这个接口被称做Session对象。5.6Session对象

在大多数情况下,利用Application对象在多用户间共享信息;而Session变量作为全局变量,用于在同一用户打开的所有页面中共享数据。Session对象用于存储关于某个用户会话(session)的信息,或者修改相关的设置。存储在session对象中的变量掌握着单一用户的信息,同时这些信息对于页面中的所有页面都是可用的。Session的属性属性说明SessionID返回当前会话的惟一标志符Timeout定义了用户Session对象的最长执行时间自定义属性自定义的属性Session对象的使用语法为:Session.属性|方法1.创建和使用Session变量格式:Session("变量名")="变量值"说明:

Session对象可以存取变量,这些变量只属于某个特定的用户。下面我们将上一节的例7.16用session变量来代替application变量。【例7.18】<html><body><center><%Session对象'存储变量

session("welcome")="欢迎光临!" session("name")="轻舞飞扬" session("endwords")="的主页"'输出变量

response.write("<p>") response.write(session("welcome")) response.write("</p><p>") response.write("这是") response.write("<b><fontsize=4color=red>")

response.write(session("name")) response.write("</font></b>") response.write(session("endwords")) response.write("</p>")%></center></body></html>该例中定义的三个变量welcome、name、endwords只属于某一个特定用户。Timeout属性语法Ses

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论