------------------------------------ HttpServletResponse详解---------------------------------------
HttpServletResponse
request是请求对象,而response是响应对象。
1 HttpServletResponse功能介绍
response对象的功能分为以下四种:
- 设置响应头信息;addHeader(“reFresh”, “5;URL=xxxx”);
- 发送状态码;sendError(404);
- 设置响应正文;getWriter().print(“fdsfdsa”);
- 重定向:sendRedirect(“path”);
2 设置状态码及其他方法
- response.setContentType("text/html;charset=utf-8"):设置响应类型为html,编码为utf-8,处理相应页面文本显示的乱码;
- response.setCharacterEncoding(“utf-8”):如果响应类型为文本,那么就需要设置文本的编码类型,然后浏览器使用这个编码来解读文本。注意,如果没有设置contentType,那么浏览器会认为contentType为text/html,如果没设置编码,那么默认为ISO-8859-1编码。所以以上两点在使用response返回结果之前必须设置。
- response.setStatus(200):设置状态码;
- response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。
3 设置响应头信息
- response.setHeader(“contentType”, “text/html;charset=utf-8”):与setContentType()方法的功能相同。setContentType()方法属于便捷方法;
刷新(定时重定向):
- response.setHeader("Refresh","5; URL=http://www.baidu.com"):5秒后自动跳转到百度主页。
代码示例:
public class HelloServlet extends HttpServlet {
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //response不是服务器跳转,需要使用绝对路径
//给response设置编码,如果响应类型为文本,我们需要设置响应编码和文本编码 //设置响应类型和编码response.setContentType("text/html;charset=UTF-8") //设置文本编码response.setCharacterEncoding("UTF-8") response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8");
//设置响应正文 response.getWriter().print("3秒后跳转到注册页面"); //3秒后跳转到1.html页面 //response.setHeader("reFresh", "3;URL=/request_demo5/1.html");
//设置状态码,一般不需要我们自己设置,这是由tomcat来分析的 //response.setStatus(404); //response.setStatus(404, "页面找不到"); //response.sendError(500, "后台错误");
//重定向,又叫客服端跳转,访问百度,显著特征地址栏发生变化 //注意request.getRequestDispatcher().forward(request,response)是服务端跳转 response.sendRedirect("http://www.baidu.com");
/** * forward和redirect的区别 * forward:是服务器端的跳转,地址栏不发生变化 * redirect:是客服端的跳转,地址栏发送变化 */
@Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }
} |