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 重定向运行过程