第六章Request和Response对象Asp内置对象之二。通过这两个对象,asp可以创建交互的动态页面。Request对象主要用于接收客户端web页面提交的数据;response允许将数据作为请求的结果发送回客户端浏览器中,并提供有关响应的信息。两对象拥有同一集合-----cookies集合。6.1Request对象从客户端获取信息客户端web向server传递信息时,request对象能获取客户端提交的全部信息。信息包括客户端用户的HTTP变量、在server端存放的客户端浏览器的cookie数据、附于url之后的字符串信息、页面表单传送的数据及客户端认证等。Request对象语法:Request[.collection|property|method](varible)Collection:数据集合Property:属性Method:方法Variable:变量参数,由字符串定义。指定要从集合中检索的项目或者作为方法和属性的输入。使用request对象时候,collection、property和method可选1或者3个都不选,此时按一下顺序搜索集合:QueryString、form、cookie、Servervariable和ClientCertificate。例如:使用request对象的querystring数据集合取得传递值参数parameter值并赋给变量id%dimidid=request.querystring(“parameter”)%包括5个数据集合、1个属性和1个方法。成员描述数据集合form读取HTML表单域控件的值,即读取客户浏览器上以post方法提交的数据数据集合querystring读取附于url后的字符串值,获取get方式提交的数据数据集合cookies读取存放在客户端浏览器cookies的内容数据集合servervariable读取客户端请求发出的http报头值以及web服务器的环境变量值数据集合clientcertificate读取客户端的验证字段属性totalbytes返回客户端发出请求的字节数量方法binaryread以二进制方式读取客户端使用post方法所传递的数据,并返回一个变量数组检索表单数据:表单是html文件的一部分,提交输入的数据。Asp中,使用request对象的form集合来收集来自客户端的以表单形式发送到服务器的信息。语法:Request.form(element)[(index)|.count]Element:集合要检索的表单元素的名称Index:用来取得表单中名称相同的元素值。Count:集合中相同名称元素的个数。一般情况下,传递大量数据使用post方法,通过form集合来获得表单数据。用get方法传递数据时,通过request对象的querystring集合来获得数据。例子(06sl01)数据和读取数据的对应关系提交方式读取方式Method=PostRequest.Form()Method=GetRequest.QueryString()利用request对象的form数据集合取得相同名称对象的不同值。例子(06sl02)检索查询字符串利用querystring可以检索HTTP查询字符串中变量的值。http查询字符串中的变量可以直接定义在超链接的url地址中的“?”后。例如:=wang如果传递多个参数变量,用“&”作为分隔符隔开。语法:request.querystring(varible)[(index)|.count]Variable:指定要检索的http查询字符串中的变量名Index:用来取得http查询字符串中相同变量名的变量值,其索引值1-.count之间任意整数Count:http查询字符串中的相同名称变量的个数有两种情况需要在服务器端指定利用querystring数据集合取得客户端传送的数据。1、在表单中通过get方式提交的数据此方法提交的数据与form数据集合相似,利用querystring数据集合可以取得在表单中以get方式提交的数据。实例(06sl03)附加参数传递,保密不好。2、利用超链接标记a传递的参数取得标记a所传递的参数值实例(06sl04)获取客户端发送数据的字节数利用request对象提供的totalbytes属性,可以取得客户端响应的数据字节数,该属性是只读属性。语法:Counter=request.totalbytesCounter变量用于存放客户端送回的数据字节大小Totalbytes属性一般与binaryread方法配合使用。实例(06sl07)以二进制码方式读取客户端传递的数据利用request对象提供的binaryread方法,可以用于以二进制码方式读取客户端使用post方法所传递的数据。语法:variant数组=request.binaryread(count)Binaryread方法的返回值是通用变量数组。Count:整型数据实例(06sl08)6.2应用Response对象向客户端输出信息Response对象允许将数据作为请求的结果发送回客户端浏览器,提供有关响应的信息认识response对象直接给客户端发送数据的对象,动态响应客户端请求,并将动态生成的响应结果返回给客户端浏览器,例如重定向。语法:response.collection|property|methodCollection:response对象的数据集合Property:response对象的属性Method:response对象的方法例如:%response.cookies(“user”)=“编程”%Response对象与一个http响应对应,通过设置其属性和方法可以控制如何将服务器端的数据发送到客户端浏览器。Response对象成员数据集合cookies设置客户端浏览器的cookie值属性buffer输出页是否被缓冲属性cachecontrol代理服务器是否能缓存asp生成的页属性status服务器返回的状态行的值属性contenttype指定响应的http内容类型属性charset将字符集名称添加到内容类型标题中属性expires浏览器缓存页面超时前,指定缓存时间属性expiresabsolute指定浏览器上缓存页面超过的日期和时间属性Isclientconneted表明客户端是否跟服务器断开属性PICS将pics标记的值添加到响应的标题的pics标记字段中方法write直接向客户端浏览器输出数据方法end停止处理.asp文件并返回当前结果方法redirect重定向当前页面,连接另一个url方法clear清除服务器缓存的html信息方法flush立即输出缓冲区的内容方法binarywrite按字节格式向客户端浏览器输出数据,不进行任何字符集的转换方法addheader设置html标题方法appendtolog在web服务器的日志文件中记录日志将信息从服务器端直接发送给客户端Write方法是response对象常用的响应方法,将指定的字符串信息从server端直接输送给client端,实现在client端动态的显示内容。语法:response.writevariantVariant:输出到浏览器的变量数据或者字符串两种用法相同:1、%=“输出语句”%2、%response.write”输出语句”%注意:1、vbscript静态字符常量的长度不能大于1022个字节,输出长度大于这个数的时候,需要一个变量来引用。例如:%String1=string(1111,”0”)Response.write(string1)%2、使用write方法时,输出的字符串不允许包含“%”字符串,用转义字符”%\”重定向网页:redirect方法语法:Response.redirecturl调用redirect方法时,将会忽略所有的输出而直接定向到被指定的页面。实例(06sl10)结束服务器对脚本的运行:end方法语法:response.end结束服务器对脚本的运行并将结果返回给浏览器。如果response对象的buffer属性设置为true,则可以调用response对象的end方法将缓冲区内容输出。另外由于可以强制结束asp程序执行,在调试程序时可以调用该方法。实例(06sl11)清除缓冲区:clear方法。只有当buffer属性为true时,才能执行clear方法,否则导致运行错误。语法:response.clear实例(06sl12)Buffer属性默认为false。Clear方法要慎用。输出缓冲区内容:flush方法,使用此方法,同样需要将response对象的buffer属性设置为true,否则导致运行错误。语法:response.flushBuffer属性为true时,调用response对象的flush方法将缓冲区中的所有当前缓存页面内容发送到客户端。实例(06sl13)直接向客户端浏览器发送二进制数据利用binarywrite可以直接发送二进制数据,不需要进行任何字符集转换。语法:response.binarywritevariableVariable:是一个变量,它的值是要输出的二进制数据,一般是非文字资料,比如图像文件和声音文件等。实例(06sl14)6.3使用cookies在客户端保存信息Cookies是一种将数据传送到客户端浏览器的文本句式,从而将数据保存在客户端硬盘上,实现与某个web站点持久的保持会话。Response对象跟request对象都包含。Request.cookies是一系列cookies数据,同客户端httprequest一起发给web服务器;而response.cookies则是把web服务器的cookies发送到客户端。认识cookies协会的支持。Cookies文件的变量称为cookies变量,使用cookies变量可保存某些联机所使用的数据操作cookies1、写入cookies向客户端发送cookies的语法:Response.cookies(“cookies名称”)[(“键名值”).属性]=内容(数据)必须放在发送给浏览器的html文件的html标记之前2、读取cookies读取时,必须使用request对象的cookies集合。语法:%=request.cookies(“cookies名称”)%Cookies的属性Expires:可以给cookies设置一个期限Domain:定义cookies传送数据的唯一性Path:定义了cookies只发给指定路径的请求Secure:指定cookies是否被客户读取Haskeys:如果所请求的cookies是一个具有多个键值的cookies字典,则haskeys返回true,它是一个只读属性。应用response对象的cookies数据集合写入cookie文件Asp中可以使用cookies集合设置cookie的值,如果指定的cookie不存在,则创建,如果存在,设置新值并删除原值。语法:response.cookies(cookiesmame)[(key)|.attribute]=valueCookiesname:cookies变量名称Key:如果指定key,则该cookies就是一个集合,它包含几个关键字,可以分别赋值。Attribute:指定cookies自身的信息Response的cookies方法的属性见下表:Expires仅可写入,指定该cookies到期的时间Domain仅可写入,指定cookies仅送到该域Path仅可写入,指定cookies仅送到该路径Secure仅可写入,设置该cookies得安全性Haskeys只读,自定cookies是否包含关键字,也就是判定cookies目录下是否包含其他cookies跟response.redirect语句类似。Response.cookies