第5章Request和Response对象5.1ASP内置对象5.2Response对象5.3Request对象5.4综合实例通过本章的学习,应该重点掌握以下内容:掌握Response对象的属性和方法掌握Request对象的属性和方法5.1ASP内置对象提供了Request,Response,Server,Session,Application和ObjectContext共6个内置对象,这些对象在使用时并不需要经过任何声明或建立的过程。对象名称对象功能Request对象Request对象负责从用户端接收信息,获取客户端的信息Response对象Response对象负责传送信息给用户,将信息发送回浏览器Server对象Server对象负责控制ASP的运行环境,提供许多服务器端的应用函数Session对象Session对象负责存储个别用户的信息,以便重复使用Application对象Application对象负责存储数据以供多个用户使用ObjectContext对象ObjectContext对象可供ASP程序直接配合MicrosoftTransactionServer(MTS)进行分布式的事务处理5.2Response对象Response对象用于动态响应客户端请求,并将动态生成的响应结果以HTML超文本的格式输出到客户端浏览器中。Response的使用语法为:Response.collection|property|method其中collection表示Response对象的集合,property表示Response对象的属性,method表示Response对象的方法。三个参数只能选择其中的一个。5.2.1Response对象的属性属性功能说明Buffer表明页输出是否被缓冲CacheControl决定代理服务器是否能缓存ASP生成的输出Charset将字符集的名称添加到内容类型标题中ContentType指定响应的HTTP内容类型Expires在浏览器中缓存的页面超时前,指定缓存的时间ExpiresAbsolute指定浏览器上缓存页面超时的日期和时间IsClientConnected表明客户端是否与服务器断开Pics将PICS标记的值添加到响应的标题的PICS标记字段中Status服务器返回的状态行的值1、Buffer属性Web服务器响应客户端浏览器的请求时,是以信息流的方式将相应的数据发送给客户端浏览器,发送过程是先返回响应头,再返回正式的页面。在处理ASP页面是,提供了一种发送方式,即设置Response对象的Buffer属性实现缓存输出。缓存输出是指Web服务器生成ASP页面时等ASP页面全部处理完之后再返回用户请求。Response对象的Buffer属性须在任何信息发向客户端浏览器之前设置。启用后凡是输出到客户端的信息都暂时存入缓冲区,直到整个ASP执行结束后或调用了Response对象的Flush或End方法后,才将相应发送给客户端的浏览器。语法:Response.Buffer=True/FalseTrue:服务器端先输出道缓冲区,再从缓冲区输出到客户端浏览器。False:不输出到缓冲区,服务器端直接将信息输出至客户端浏览器。2.CacheControl属性应用程序通过代理服务器将页面发送给客户。代理服务器代表客户端浏览器向Web服务器请求页面。代理服务器高速缓HTML页,这样对同一页的重复请求会迅速高效的返回到浏览器。用代理服务器来处理请求并高速缓存页面可以减少网络和Web服务器的负载。语法:Response.Cachecontrol=Cache_Control_HeaderCache_Control_Header表示缓存存储器控制标题,取值为Private或Public。Private为默认值,表示只有私有缓存区才能缓存该页面,大多数代理服务器不具有这种设置的页面。Public为代理服务器可以缓存具有这种设置的页面。3.Status属性指定服务器返回的状态行的值。Status属性传递服务器Response报文的状态,规定响应的HTTP头域内容,并发送给客户端相应的状态值和消息。语法:Response.Status=StatusDescriptionStatusDescription表示状态码以及状态码内容。4.ContentType属性指定服务器相应的HTTP内容类型。语法:Response.ContentType=[ContentType]ContentType描述内容类型的字符串,该字符串通常被格式化为类型/子类型,其中类型是常规内容范畴,而子类型为特定内容类型,默认为text/html。此外还有image/gif、image/jpeg5.Charset属性将字符集的名称添加到Response对象中、content-type内容类型标题后,设置或返回字体中所用字符集。语法:Response.Charset=[Charsetname]Charsetname指定网页字符集名字的字符串,说明字符集的特征。设置Charset属性值为gb2312例如:%Response.Charset=“gb2312”%6.Expires属性用于指定在浏览器上缓冲存储的页面距长期还有多长时间。设置Expires属性的属性值为0,可以使缓存的页面立即过期,防止浏览器高速缓存该页。语法:Response.Expires[=number]Number用于指定缓存的页面距过期还有多长时间。7.ExpiresAbsolute属性指定缓存于浏览器中的页面到期的日期和时间。与Expires不同的是,ExpiresAbsolute指定了缓存与浏览器中页面的到期时间,能够确切到日期和时间。语法:Response.ExpiresAbsolute=[date][time]在未到期之前,如果用户返回到该页面,就显示该缓存页面。若未指定日期就按当天指定的时间到期。8.IsClientConnected属性用以判断客户端与服务器的连接状态,为只读属性。语法:Response.IsClientConnected返回值为True或False,True表示客户端与服务器端连接,相反表示断开。9.PICS属性PICS由W3C提出,作为互联网上内容筛选的通用标准。对每一个网页的内容进行分类,根据内容特性加上标记,同时由计算机软件对网页的标记进行检测,以限制对特定内容网页的检索。5.2.2Response对象的方法方法功能说明AddHeader设置HTML标题AppendToLog在Web服务器的日志文件中记录日志BinaryWrite按照字节格式向客户端浏览器输出数据,不进行任何字符集的转换Clear清除服务器中缓存的HTML信息End停止处理.asp文件并返回当前的结果Flush立即发送缓冲的输出Redirect重定向当前页面,尝试连接另外一个URLWrite直接向客户端浏览器输出数据1.Write方法将指定的字符串信息输出到客户端。语法:Response.WritevariantVariant:输出到浏览器的变量数据或者字符串。Write方法可以把信息从服务器端直接发送给客户端,就是在客户端动态显示内容。在HTML页面中,插入一个简单的输出语句时%=“输出语句”%与%Response.Write“输出语句”%效果相同。2.End方法该方法用来结束服务器对脚本的运行并将结果返回给浏览器。使Web服务器的ASP处理程序停止处理ASP脚本,并返回当前结果,文件中剩余的内容将不被处理。语法:Response.End3.Redirect属性该方法是将指示客户端浏览器重定向到另一个Web页面。语法:Response.RedirectURL4.Clear属性Clear方法用于清楚任何缓冲的HTML出书,即清楚缓冲区。只有当Buffer属性设置为True时,即缓冲区有内容时,才能执行Clear方法,否则将导致运行错误。5.Flush属性将缓冲区内容立即发送给客户端浏览器。使用这一方法时,需要将Buffer属性设置为True6.BinaryWrite属性用于直接向客户浏览器发送二进制数据,并且不进行任何字符集转换。语法:Response.BinaryWriteVariable7.Addheader属性用于设置HTML文件的HTTP标题。语法:Response.Addheader(name,value)Name表示一个新的标题变量名称Value表示存储在新的标题变量中的初始值。8.AppendTolog属性该方法是在请求的Web服务器日志条目后添加字符串。语法:Response.AppendTolog(string)5.3Cookie的使用5.3.1Cookie概述Cookie实际上是一个字符串或一个标志,当一个包含Cookie的页面被用户浏览器读取时,一个Cookie就被存入到本地硬盘中,当需要时该网站可以从用户的本地硬盘中读取这些Cookie。5.3.2创建Cookie格式如下:Response.Cookies(Cookie)[(key)|attribute]=Value1.创建单值的Cookie要创建不带关键字key的Cookie,只需指定参数Cookie的值以及value的值。2.创建带有关键字的Cookie字典需要带上key参数。5.3.3读取Cookie的值格式如下:Request.cookies(Cookie)[(key)|.attribute]1.读取单值的Cookie对于一般不带关键字的Cookie,可以采用指定Cookie名称的方式来检索Cookie的值。2.读取Cookie字典对于Cookie字典的检索和读取,可以通过使用关键字来进行,也可以使用序号来进行。5.3.4使用Cookie进行数据提交第1步:建立数据录入页面(文件名为cooktj.htm)。第2步:建立数据接收的程序(文件名为cookjs.asp)。第3步:建立数据处理程序(文件名为cookcl.asp)。第4步:在浏览器地址栏中输入页面。5.4Request对象ASP通过Request对象接收来自客户端的请求,将请求信息发送给服务器端进行处理。Request对象的语法如下:Request[.collection|property|method](variable)其中collection表示Request对象的数据集合property表示Request对象的属性method表示Request对象的方法5.4.1Request对象的属性Request对象只提供一个TotalBytes属性,这是一个只读的属性,表示从客户端所接收数据的字节的长度,其语法如下:字节长度=Request.TotalBytes例:%Response.Write“从客户端接收的数据字节大小为:&Request.TotalBytes%5.4.2Request对象的方法Request对象只提供一种BinaryRead方法,该方法是以二进制方式来读取客户端使用POST传送方法所传递的数据。其语法如下:Variant数组=Request.BinaryRead(Count)BinaryRead方法的返回值为通用变量数组(VariantArray),其参数Count是一个整型数据,用以表示每次读取数据的字节大小,范围介于0到Request对象TotalBytes方法所取得的字节大小之间。5.4.3Request的数据集合(Collections)集合保存用户端的信息,其使用语法如下:Request[.collection](variable)collection指定Request对象的数据集合。集合功能说明ClientCertificate取得客户端的身份权限数据Cookies取得存在于客户端浏览器的Cookies数据Form取得客户端利用POST方式所传递的数据QueryString取得客户端利用GET方式所传递的数据ServerVariables取得Web服务器端的环境变量信息1、Form数据集合在W