6.1.2 Response 请求响应对象 Response 对象是 HttpResponse 类的一个实例。HttpResponse 类用户封装页面操作的 HTTP 响应信息。Response 对象的常用属性如下所示。 BufferOutput:获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页面之后将其发 送。 Cache:获取 Web 页面的缓存策略。 Charset:获取或设置输出流的 HTTP 字符集类型。 IsClientConnected:获取一个值,通过该值指示客户端是否仍连接在服务器上。 ContentEncoding:获取或设置输出流的 HTTP 字符集。 TrySkipIisCustomErrors:获取或设置一个值,指定是否支持 IIS 7.0 自定义错误输出。
1 Response 常用属性 6.1.2 Response 请求响应对象 BufferOutput 的默认属性为 True。当页面被加载时,要输出到客户端的数据都暂时存储在服务器的 缓冲期内并等待页面所有事件程序,以及所有的页面对象全部被浏览器解释完毕后,才将所有在缓冲区 中的数据发送到客户端浏览器,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) { Response.Write("缓冲区清除前.."); } //输出缓冲区清除 上述代码在 cs 文件中重写了 Page_Load 事件,该事件用于中向浏览器输出一行字符串“缓冲区清 除前”。在 ASPX 页面中,可以为页面增加代码以判断缓冲区的执行时间,示例代码如下所示。 <body> <form id="form1" runat="server"> <div> <% Response.Write("缓冲区被清除"); %> </div> </form> </body> //输出字符串
6.1.2 Response 请求响应对象 上述代码在页面中插入了一段代码,并输出字符串“缓冲区被清除”。在运行该页面时,数据已经 存放在缓冲区中。然后 IIS 才开始读取 HTML 组件的部分,读取完毕后才将结果送至客户端浏览器,所 以在运行结果中可以发现,“缓冲期清除前”是在“缓冲区被清除”字符串之前出现,如图所示。
使用上述代码将指定 BufferOutput 的属性为 False,在运行时缓冲区数据不会被 Clear 方法清除。 6.1.2 Response 请求响应对象 因为 BufferOutput 属性默认为 true,所以上述代码并无法看到明显的区别,当在浏览器输出前清除缓冲区时,则可以看出区别。示例代码如下所示。 Response.Write("缓冲区清除前.."); Response.Clear(); //清除缓冲区 当使用 Response 的 Clear 方法时,缓冲区就被显式的清除了。在运行后,“缓冲区清除前”字符串 被清除,并不会呈现给浏览器。当需要屏蔽 Clear 方法对缓冲区的数据清除,则可以指定 BufferOutput 的属性为 False,示例代码如下所示。 Response.BufferOutput = false; Response.Write("缓冲区清除前.."); Response.Clear(); //设置缓冲区属性 //设置清除前字符 //清除缓冲区 使用上述代码将指定 BufferOutput 的属性为 False,在运行时缓冲区数据不会被 Clear 方法清除。
2 Response 常用方法 6.1.2 Response 请求响应对象 Response 方法可以输出 HTML 流到客户端,其中包括发送信息到客户端和客户端 URL 重定向,不仅如此,Response 还可以设置 Cookie 的值以保存客户端信息。Response 的常用方法如下所示: Write:向客户端发送指定的 HTTP 流。 End:停止页面的执行并输出相应的结果。 Clear:清除页面缓冲区中的数据。 Flush:将页面缓冲区中的数据立即显示。 Redirect:客户端浏览器的 URL 地址重定向。
上述代码则会向浏览器输出一串 HTML 流并被浏览器解析,如图 13-3 所示。 6.1.2 Response 请求响应对象 在Response的常用方法中,Write方法是最常用的方法,Write能够向客户端发送指定的HTTP流, 并呈现给客户端浏览器,示例代码如下所示。 Response.Write("<div style=\"font-size:18px;\">这是一串<span style=\"color:red\">HTML</span>流</div>"); 上述代码则会向浏览器输出一串 HTML 流并被浏览器解析,如图 13-3 所示。
6.1.2 Response 请求响应对象 当希望在 Response 对象运行时,能够中途进行停止时,则可以使用 End 方法对页面的执行过程进 行停止,示例代码如下所示。 for (int i=0; i < 100; i++) { if (i < 10) Response.Write("当前输出了第" + i + "行<hr/>"); } else Response.End(); //循环 100 次 //判断 i<10 //i<10 则输出 i //否则停止输出 //使用了 End 方法停止执行
6.1.2 Response 请求响应对象 上述代码循环输出 HTML 流“当前输出了第 X 行”,当输出到 10 行时,则停止输出,如图所示。 Redirect 方法通常使用于页面跳转,示例代码如下所示。 Response.Redirect("http://www.shangducms.com"); //页面跳转 执行上述代码,将会跳转到相应的 URL。