web应用程序设计:ASP.NET/PHP/JSP技术教程
上QQ阅读APP看书,第一时间看更新

3.2 Response对象

Response对象是对Request对象的“响应”,功能与Request对象相反。对于Web服务器来说,Response对象就是回复浏览器请求的文件和数据,用来控制信息的发送,可以直接发送给浏览器、重定向浏览器到另一个URL地址或设置Cookie的值。

语法格式:Response.属性|方法|集合(变量)

3.2.1 Response属性

(1)Buffer属性。

Buffer属性指示是否缓冲页输出。当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了Flush或End方法后,服务器才将响应发送给客户端浏览器,服务器将输出发送给客户端浏览器后就不能再设置Buffer属性。因此,应该在.asp文件的第一行调用Response.Buffer。

(2)Charset属性。

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。

(3)ContentType属性。

ContentType属性指定服务器响应的HTTP内容类型,如果未指定ContentType,默认类型为text/HTML。

(4)Expires属性。

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

(5)ExpiresAbsolute属性。

与Expires属性不同,ExpiresAbsolute属性指定缓存于浏览器中的页面的确切到期日期和时间。在未到期之前,若用户返回到该页,该缓存中的页面就显示。如果未指定时间,该主页在当天午夜到期。如果未指定日期,则该主页在脚本运行当天的指定时间到期。如下示例指定页面在2015年12月10日上午9点00分30秒到期。

(6)IsClientConnected属性。

IsClientConnected属性返回访问者是否还在链接着站点。它的返回值是个布尔属性,若返回值为True,则说明读者还在链接着站点。如果返回值为假,说明访问者已经离开了站点的页面。

(7)Satutus属性。

Satutus属性允许设置返回的状态头标,在有些情况下,比如说要动态的创建一个有可能不为真的条件时,这个属性显的非常重要。设置这个状态属性还可以帮助调试代码,看看在特定状态时会发生什么事情。

3.2.2 Response方法

(1)Clear方法。

可以用Clear方法清除缓冲区中的所有HTML输出内容。Clear方法只清除响应正文内容而不清除响应标题。可以用该方法处理错误情况,使用时应将Response.Buffer设置为TRUE,否则会导致程序运行时出错。

(2)End方法。

End方法使Web服务器停止处理脚本并返回当前结果。文件中剩余的内容将不被处理。如果Response.Buffer已设置为TRUE,则调用Response.End可将缓冲内容输出到客户端,并清除缓冲区内容。

(3)Flush方法。

Flush方法立即发送缓冲区中的输出内容。如果没有将Response.Buffer设置为TRUE,则该方法将导致运行时错误。

(4)Redirect方法。

Redirect方法使浏览器立即重定向到程序指定的URL。程序员可以根据客户的不同响应,为不同的客户指定不同的页面或根据不同的情况指定不同的页面。一旦使用了Redirect方法,任何在页中显示设置的响应正文内容都将被忽略。然而,此方法不向客户端发送该页设置的其他HTTP标题,而是产生一个将重定向URL作为链接包含的自动响应正文。可以用Redirect方法发送下列显式标题,其中URL是传递给该方法的值。如:

(5)Write方法。

Write方法是我们平时最常用的方法之一,它将指定的字符串和表达式的值写到客户端当前的HTTP网页上输出。代码格式为:

如代码<%Response.Write("现在是:"&Now())%>可输出当前日期和时间。

(6)BinaryWrite方法。

BinaryWrite方法允许用户给浏览器发送非文本的原始二进制信息,这个方法的格式如下:Response.BinaryWrite DateToWrite,在这里DateToWrite变量包含了要发送到浏览器的二进制的信息。一般用这个方法来传送声音、图像、可执行文件、压缩文件等。

3.2.3 Response集合

Response对象中只有一个集合Cookie, Cookie是指从网络服务器发送到用户浏览器,并存储到硬盘上的少量数据集合,通常包括一些特殊标识符,记录着用户有关访问网站次数、购物方式、身份证号、密码等信息。当下次再访问同一网站时,网站页面会查找到该Cookie值。除用户浏览器不允许,每个网站都有可能将其Cookie发送到用户浏览器中,并且保存在用户硬盘上的小文本文件中。这些Cookie值保存在Windows文件夹下。

语法格式:Response.Cookies(cookie)[(key)|.attribute]=value

通过这个代码可以创建cookie文本或用cookie值去修改其内容。若cookie名所指定的Cookie不存在,则创建它,否则用新的cookie值覆盖Cookie旧值;若指定了key,则该cookie就是一个集合;而属性attribute指定cookie自身的有关信息,可以是下列参数之一:

Domain:Cookie将被发送到对该域的请求中去。

Expires:用于指定Cookie的过期日期。若该属性的设置未超过当前日期,则在任务结束后Cookie到期。要存储cookie值,必须设置该日期。

HasKeys:判断Cookie中是否包含多个关键字。若包含多个,则返回true。

Path:将Cookie发送到Path指定的路径中。若没有该项,则发送到应用程序的路径中。

Secure:设置Cookie的安全性。

3.2.4 Response与Request综合实例

(1)用Request对象的ServerVariables集合读取服务器环境变量信息。

【例3.2.1】读取服务器环境变量信息实例。

3-2-1. asp程序代码如下:

运行的部分结果如图3.2.1所示。

图3.2.1 Request对象的ServerVariables集合

(2)用Response和Request对象通过登录表单提供的信息建立MyCookie文件,并读取其中的信息实例。

【例3.2.2】Response与request对象的使用实例

3-2-2. asp程序代码如下:

3-2-2_l. asp程序代码如下:

运行程序3-2-2.asp,并在表单中输入数据,输入界面如图3.2.2所示。当单击“提交查询内容”按钮后,则运行程序3-2-2_1.asp,建立一个名为MyCookie的Cookie,并将MyCookie中的内容显示出来,程序3-2-2_1.asp的执行结果如图3.2.3所示。

图3.2.2 程序3-2-2.asp输入界面

图3.2.3 程序3-2-2_1.asp的执行结果