您好,欢迎访问三七文档
No:1ASP内置对象详解Request对象和Response对象在ASP中能够应用客户请求和服务器响应的细节是通过ASP内置的Request和Response对象来实现的。Request对象:为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供的全部信息。这包括能指明浏览器和用户的HTTP变量,在这个域名下存入的游览器中的cookie,任何作为查询字符串而附于URL后面的字符串或页面的FORM段中的HTML控件的值,提供使用SecureSocketLayer(SSL)或其他加密通信协议的授权访问,及有助于对连接进行管理的属性。Response对象:用来访问服务器端所创建的并发回到客户端的响应信息。为脚本提供HTTP变量,指明服务器和服务器的功能和关于发回浏览器内容的信息及任何将为这个域而存放在浏览器里的新的cookie.它也提供了一系列的方法来创建输出,例如response.write方法。Request对象成员概述1.Request对象的集合集合名称说明ClientCertificate当客户端访问一个页面或其他资源时,用来向服务器表明身份的客户证书的所有字段或条目的数值集合,每个成员均是只读Cookies根据用户的请求,用户系统发出的所有cookie的值的集合,这些cookie仅对相应的域有效,每个成员均为只读FormMETHOD的属性值为POST时,所有作为请求提交的FORM段中的HTML控件单元的值的集合,每个成员均为只读QueryString依附于用户请求的URL后面的名称/数值对或者作为请求提交的且METHOD属性值为GET(或者省略其属性)的,或FORM中所有HTML控件单元的值,每个成员均为只读ServerVariables随同客户端请求发出的HTTP报头值,以及Web服务器的几种环境变量的值的集合,每个成员均为只读2.Request对象的属性属性说明TotalBytes只读,返回由客户端发出的请求的整个字节数量3.Request对象的方法方法说明BinaryRead(count)当数据作为POST请求的一部分发往服务器时,从客户请求中获得count字节的数据,返回一个Variant数组(或者SafeArray)。如果ASP代码已经引用了Request.Form集合,这个方法就不能用。同样,如果用了BinaryRead方法,就不能访问Request.Form集合Response对象成员概述1.Response对象的集合No:2Response对象只有一个集合,该集合设置希望放置在客户系统上的cookie的值,它直接等同于Request.Cookies集合集合名称说明Cookies当前响应中,发回客户端的所有cookie的值,这个集合为只写2.Response对象的属性Response对象也提供一系列的属性,可以读取(多数情况下)和修改,使响应能够适应请求。这些由服务器设置,我们不需要设置它们。需要注意的是,当设置某些属性时,使用的语法可能与通常所使用的有一定的差异。属性说明Buffer=True|False读/写,布尔型,表明由一个ASP页所创建的输出是否一直存放在IIS缓冲区,直到当前页面的所有服务器脚本处理完毕或Flush、End方法被调用。在任何输出(包括HTTP报头信息)送往IIS之前这个属性必须设置。因此在.asp文件中,这个设置应该在%@LANGUAGE=...%语句后面的第一行。ASP3.0缺省设置缓冲为开(True),而在早期版本中缺省为关(False)CacheControlsetting读/写,字符型,设置这个属性为“Public”允许代理服务器缓存页面,如为“Private”则禁止代理服务器缓存的发生。Charset=value读/写,字符型,在由服务器为每个响应创建的HTTPContent-Type报头中附上所用的字符集名称(例如:ISO-LATIN-7)ContentType=MIME-type读/写,字符型,指明响应的HTTP内容类型,标准的MIME类型(例如“text/xml”或者“Image/gif”)。假如省略,表示使用MIME类型“text/html”,内容类型告诉浏览器所期望内容的类型Expiresminutes读/写,数值型,指明页面有效的以分钟计算的时间长度,假如用户请求其有效期满之前的相同页面,将直接读取显示缓冲中的内容,这个有效期间过后,页面将不再保留在私有(用户)或公用(代理服务器)缓冲中ExpiresAbsolute#date[time]#读/写,日期/时间型,指明当一个页面过期和不再有效时的绝对日期和时间IsClientConnected只读,布尔型,返回客户是否仍然连接和下载页面的状态标志。在当前的页面已执行完毕之前,假如一个客户转移到另一个页面,这个标志可用来中止处理(使用Response.End方法)PICS(PICS-Label-string只写,字符型,创建一个PICS报头并将之加到响应中的HTTP报头中,PICS报头定义页面内容中的词汇等级,如暴力、性、不良语言等Status=Codemessage读/写,字符型,指明发回客户的响应的HTTP报头中表明错误或页面处理是否成功的状态值和信息。例如“200OK”和“404NotFound”3.Response对象的方法最后,Response对象提供一系列的方法,如表2-6所示,允许直接处理为返给客户端而创建的页面内容。方法说明AddHeader(name,content)通过使用name和Content值,创建一个定制的HTTP报头,并增加到响应之中。不能替换现有的相同No:3名称的报头。一旦已经增加了一个报头就不能被删除。这个方法必须在任何页面内容(即text和HTML)被发往客户端前使用AppendToLog(string)使用“W3CExtendedLogFileFormat”文件格式时,对于用户请求的Web服务器的日志文件增加一个条目。至少要求在包含页面的站点的“ExtendedProperties”页中选择“URIStem”BinaryWrite(SafeArray)当前的HTTP输出流中写入Variant类型的SafeArray,而不经过任何字符转换。对于写入非字符串的信息,例如定制的应用程序请求的二进制数据或组成图像文件的二进制字节,是非常有用的Clear()当Response.Buffer为True时,从IIS响应缓冲中删除现存的缓冲页面内容。但不删除HTTP响应的报头,可用来放弃部分完成的页面End()让ASP结束处理页面的脚本,并返回当前已创建的内容,然后放弃页面的任何进一步处理Flush()发送IIS缓冲中所有当前缓冲页给客户端。当Response.buffer为True时,可以用来发送较大页面的部分内容给个别的用户Redirect(url)通过在响应中发送一个“302ObjectMoved”HTTP报头,指示浏览器根据字符串url下载相应地址的页面Write(string)在当前的HTTP响应信息流和IIS缓冲区写入指定的字符,使之成为返回页面的一部分使用Form和QueryString集合当用户填写页面FORM内容时所提供的全部值,或在浏览器地址栏输入在URL后的值,通过Form和QueryString集合为ASP脚本所用。这是在ASP代码中访问值的一种简单方法.访问ASP集合的一般技术大多数ASP集合与在VB中见到的普通集合相差不多。实际上,它们是值的数组,但能通过使用一个文本字符串键(对大小写不敏感)以及一个整型索引进行访问。因此,假如客户端Web页面包含的FORM如下:FORMACTION=”show_request.asp”METHOD=”POST”姓名:INPUTTYPE=”TEXT”NAME=”xm”性别:INPUTTYPE=”TEXT”NAME=”xb”INPUTTYPE=”SUBMIT”VALUE=”确定”/FORM可通过访问ASP的Form集合来访问其控件内的值strxm=request.form(“xm”)strxb=request.form(“xb”)也可使用窗体中控件的整型索引,索引的范围从在HTML中第一个定义的控件开始,然后根据定义的顺序排序:strxm=request.form(1)strxb=request.form(2)No:4然而,后面的这种以整型为索引的技术不推荐使用,因为一旦HTML中的控件发生了变化,或者插入一个新的控件,则ASP代码将得到错误的值。进一步而言,对于阅读代码的人来讲,极容易混淆。1.访问集合的全部值可以通过引用集合把整个Form上的一系列值变成单个的字符变量,且不用提供键或索引。Strall=request.form假如文本框包含值陈强和男,则Request.Form语句将返回下列字符:xm=陈强&xb=男注意,提供的值是以名称/值对的形式出现的(即控件名称=控件值),并且每一对名称/值相互之间是用符号“&”相分隔的。2.遍历一个ASP集合有两种方式遍历一个ASP集合中的所有成员,方式与普通VB集合的基本相同。每个集合提供一个Count属性,返回的是集合中条目数量。可通过使用一个整型索引使用count属性来遍历集合。Fori=1torequest.form.countResponse.writerequest.form(i)&“BR”Next假如先前的窗体包含陈强和男值的两个文本框,将得到如下结果:陈强男然而,更好的方法是使用ForEach...Next结构ForeachIinrequest.formResponse.writeI&“=”&request.form(i)&“BR”Next这带来的好处是既可以访问控件的名称又可访问其值。上述代码将得到如下结果:XM=陈强XB=男3.集合成员的多值性在某些情况下,ASP集合中的各个成员可能不只一个值,这种情况发生在HTML定义中有几个控件有相同Name属性时。例如:FORMACTION=”show_request.asp”METHOD=”POST”INPUTTYPE=”TEXT”NAME=”zsc”INPUTTYPE=”TEXT”NAME=”zsc”INPUTTYPE=”TEXT”NAME=”zsc”INPUTTYPE=”SUBMIT”VALUE=”确定”/FORM在Form集合中,将为键“ZSC”创建一个条目。然而,它将包括从三个文本框中得到的值。假如在提交时,用户留下了一个或多个为空,则返回的值为空字符串。假如用户在第一和第三个文本框分别输入湖南和湖北,第二个文本框为空,在我们的ASP代码中访问Request.Form(“OtherHobby”),将返回字符串:湖南,,湖北为了能够在这种情况下,访问单个值,可以用复杂一些的代码:Foreachiinrequest.formIfrequest.form(i).count1‘如果元素是多值型No:5Response.write“元素名为:”&I&“其值如下:”&“BR”Forj=1torequest.form(i).countResponse.write“子键:”&j&“它的值为:”&requesq.form(i)(j)&“BR”NextElseResponse.write“元素名为:”&I&“其值为:”&request.form(i)&“BR”EndifNext对于前面的包含三个zsc控件的窗体实例,这将返回元素名为:zsc其值如下:子键:1它的值为:湖南子键:2它的值为:子键:3它的值为:湖北然而,由于很少给多个文本框相同的名字,因此这种技术很少用到。(1)HTML中的单选或选项按扭控件在HTML中,需要给几个控件相同的Name属性的情况是单选(或选项)按钮,例如:FORMACTION=”show_request.asp”METHOD=”POST”INPUTTYPE=”RADIO”NAME=”zsc
本文标题:ASP内置对象详解
链接地址:https://www.777doc.com/doc-4989921 .html