4.2 response对象

本节介绍response对象的常用方法。当用户访问一个页面时,就会产生一个HTTP请求,服务器做出响应时调用的是response响应包。response响应包实现的是接口javax.servlet.http.HttpServletResponse。

4.2.1 response对象的常用方法

response对象的常用方法参见表4.2。

表4.2 response对象的常用方法

4.2.2 设置头信息

设置头信息包括设置页面返回的MIME类型、返回的字符集、页面中的meta等信息。其中设置MIME类型和返回的字符集尤为重要,因为它关系到页面的显示是否会出现乱码。有两种方法设置MIME类型和返回的字符集,分别如下:

      response.setContentType(String type):其中type的值为“text/html; charset=utf-8”,
  当然可以为其他的MIME类型和字符集。

用page指令。基本固定格式为:

      <%@ page contentType="text/html; charset=utf-8" language="java" %>

【例4.4】 setContentType的用法示例。

setContentType.jsp用来设置MIME类型和字符集,MIME设置为“text/html”,字符集设置为“UTF-8”,其源代码如下:

      -----------------setContentType.jsp----------------
        01   <%
        02     response.setContentType("text/html; charset=UTF-8"); //设置字符集和MIME
    类型
        03     String str = new String("这是测试例子".getBytes("ISO-8859-1"), "utf-8");
        04   %>
        05   <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        06   <html>
        07    <head>
        08      <title>setContentType.jsp</title>
        09    </head>
        10
        11    <body>
        12       <p>这里是一段中文字符</p>
        13        </br>
        14        <%=str %>
        15    </body>
        16   </html>

页面效果如图4.7所示。

图4.7 setContentType运行示例

从运行结果可以看出,脚本中经过转码的文字显示正常,而在HTML中的字是乱码。

使用page指令设定字符集,在写法和处理上都相对简单些,HTML中的中文字不需要转码,而且脚本中的中文字也不需要转码。

【例4.5】用page指令设置页面字符集

      01   <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
      02   <%
      03      String str = "这是测试例子";
      04   %>
      05   <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      06   <html>
      07    <head>
      08      <title>page 指令setContentType.jsp</title>
      09    </head>
      10
      11    <body>
      12       <p>这里是一段中文字符</p>
      13        </br>
      14        <%=str %>
      15    </body>
      16   </html>

上述代码中,第1行用page指令设置页面字符集,页面效果如图4.8所示。

图4.8 page指令设置字符集

提示

JSP中页面设置字符集会破坏JSP容器自身的页面编码处理,所以不建议设置。但可以在Servlet中设定。用page指令设置字符集相对简单,所以在开发中一般都采用这种模式。

设置头meta信息是指HTML页面中存在于<head></head>之间的信息。例如:

(1)<meta http-equiv="pragma" content="no-cache">:设定禁止浏览器从本地机的缓存中调用页面内容,设定后离开网页就不能从Cache中再调用。

(2)<meta http-equiv="cache-control" content="no-cache">:请求和响应遵循的缓存机制策略。

(3)<meta http-equiv="expires" content="0"> :用于设定网页的到期时间,一旦过期则必须到服务器上重新调用。

(4)<meta http-equiv="keywords" content="keyword1, keyword2, keyword3">:向搜索引擎说明网页的关键字。

(5)<meta http-equiv="description" content="This is my page">:向搜索引擎说明网页的主要内容。

【例4.6】设定meta头信息

页面setMeta.jsp用于设置meta中的信息,其源代码如下:

      -----------------setMeta.jsp----------------
      01   <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
      02   <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      03   <html>
      04    <head>
      05      <title>My JSP 'setMeta.jsp' starting page</title>
      06    </head>
      07    <body>
      08       <center class="aa">
      09          <p class="bb">
      10           现在的时间为:<br/>
      11            <%
      12                out.print(""+ new Date());
      13                response.setHeader("refresh", "1");
      14              response.setHeader("description", "实时的显示当前时间");
      15              response.setHeader("keywords", "实时,显示,显示当前时间");
      16                response.setHeader("cache-control", "no-cache");
      17             %>
      18           <br/><br/>
      19           copyright:2015
      20       </center>
      21    </body>
      22   </html>

上述代码中,代码第12~17行设置Header信息,页面效果如图4.9所示。

图4.9 设置meta头信息

从运行结果可以看出,在response中设置meta信息的效果,但实际开发中是直接在HTML标记中写定这些值,而不在响应中设定。

4.2.3 设置页面重定向

重定向是指一个页面在收到一个访问请求后,根据请求的URL重新跳转到其他的页面。设置重定向的方法是:

      response.sendRedirect(String url)

其中url代表了跳转路径,路径可以是相对路径也可以是绝对路径。

【例4.7】设定页面重定向

sendRedirect.jsp页面中设定了跳转到一个不存在的页面,其源代码如下:

      -----------------sendRedirect.jsp----------------
      01   <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
      02   <%
      03      response.sendRedirect("sendPageError.jsp");
      04   %>
      05   <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      06   <html>
      07    <head>
      08      <title>My JSP 'sendRedirect.jsp' starting page</title>
      09    </head>
      10
      11    <body>
      12      This is my JSP page. <br>
      13    </body>
      14   </html>

运行结果如图4.10所示。

图4.10 设置页面重定向

从运行结果可以看出跳转页面时,URL地址改变了且不显示sendRedirect.jsp中的页面信息。重定向的运行过程如图4.11所示。

图4.11 重定向运行过程