Java Web从入门到精通(第2版)
上QQ阅读APP看书,第一时间看更新

6.3 response对象

视频讲解:光盘\TM\lx\6\03 response对象.mp4

response对象用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效。

6.3.1 重定向网页

使用response对象提供的sendRedirect()方法可以将网页重定向到另一个页面。重定向操作支持将地址重定向到不同的主机上,这一点与转发不同。在客户端浏览器上将会得到跳转的地址,并重新发送请求链接。用户可以从浏览器的地址栏中看到跳转后的地址。进行重定向操作后,request中的属性全部失效,并且开始一个新的request对象。

sendRedirect()方法的语法格式如下:

        response.sendRedirect(String path);

参数说明:

path:用于指定目标路径,可以是相对路径,也可以是不同主机的其他URL地址。

【例6.9】使用sendRedirect()方法重定向网页到login.jsp页面(与当前网页同级)和明日编程词典网(与该网页不在同一主机)的代码如下:

        response.sendRedirect("login.jsp");             //重定向到login.jsp页面
        response.sendRedirect("www.mrbccd.com");        //重定向到明日编程词典网

注意

在JSP页面中使用该方法时,不要再用JSP脚本代码(包括return语句),因为重定向之后的代码已经没有意义了,并且还可能产生错误。

【例6.10】通过sendRedirect()方法重定向页面到用户登录页面。(实例位置:光盘\TM\sl\6\6)

(1)创建index.jsp文件,在该文件中调用response对象的sendRedirect()方法重定向页面到用户登录页面login.jsp。index.jsp文件的关键代码如下:

        <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
        <%response.sendRedirect("login.jsp"); %>

(2)编写login.jsp文件,在该文件中添加用于收集用户登录信息的表单及表单元素。关键代码如下:

        <form name="form1" method="post" action="">
        用户名:<input name="name" type="text" id="name" style="width: 120px"><br>
        密&nbsp; &nbsp;码:<input name="pwd" type="password" id="pwd" style="width: 120px"> <br>
        <br>
        <input type="submit" name="Submit" value="提交">
        </form>

图6.7 运行结果

运行本实例,默认执行的是index.jsp页面,在该页面中又执行了重定向页面到login.jsp的操作,所以在浏览器中将显示如图6.7所示的用户登录页面。

6.3.2 处理HTTP文件头

通过response对象可以设置HTTP响应报头,其中,最常用的是禁用缓存、设置页面自动刷新和定时跳转网页。下面分别进行介绍。

1.禁用缓存

在默认的情况下,浏览器将会对显示的网页内容进行缓存。这样,当用户再次访问相关网页时,浏览器会判断网页是否有变化,如果没有变化则直接显示缓存中的内容,这样可以提高网页的显示速度。对于一些安全性要求较高的网站,通常需要禁用缓存。

【例6.11】通过设置HTTP头的方法实现禁用缓存。代码如下:

        <%
        response.setHeader("Cache-Control", "no-store");
        response.setDateHeader("Expires",0);
        %>

2.设置页面自动刷新

通过设置HTTP头还可以实现页面的自动刷新。

【例6.12】使网页每隔10秒自动刷新一次。代码如下:

        <%
        response.setHeader("refresh", "10");
        %>

3.定时跳转网页

通过设置HTTP头还可以实现定时跳转网页的功能。

【例6.13】使网页5秒钟后自动跳转到指定的网页。代码如下:

        <%
        response.setHeader("refresh", "5; URL=login.jsp");
        %>

6.3.3 设置输出缓冲

通常情况下,服务器要输出到客户端的内容不会直接写到客户端,而是先写到一个输出缓冲区,在计算机术语中,缓冲区被定义为暂时放置输入或输出资料的内存。实际上,缓冲区也可以这样理解:在一个粮库中,由于装卸车队的速度要快于传送带的传输速度,为了不造成装卸车队的浪费,粮库设计了一个站台,装卸车队可以先将运送的粮食卸到这个平台上,然后让传送机慢慢传送。粮库的这个站台就起到了缓冲的作用。当满足以下3种情况之一,就会把缓冲区的内容写到客户端。

JSP页面的输出信息已经全部写入到了缓冲区。

缓冲区已满。

在JSP页面中,调用了response对象的flushBuffer()方法或out对象的flush()方法。

response对象提供了如表6.2所示的对缓冲区进行配置的方法。

表6.2 对缓冲区进行配置的方法

【例6.14】设置缓冲区的大小为32KB。代码如下:

        response.setBufferSize(32);

说明

如果将缓冲区的大小设置为0KB,则表示不缓冲。