Bootstrap

HttpServletResponse详解

------------------------------------ HttpServletResponse详解---------------------------------------

HttpServletResponse

 request是请求对象,而response是响应对象。

1 HttpServletResponse功能介绍

response对象的功能分为以下四种:

  1. 设置响应头信息;addHeader(“reFresh”, “5;URL=xxxx”);
  2. 发送状态码;sendError(404);
  3. 设置响应正文;getWriter().print(“fdsfdsa”);
  4. 重定向:sendRedirect(“path”);

 

2 设置状态码及其他方法

  1. response.setContentType("text/html;charset=utf-8"):设置响应类型为html,编码为utf-8,处理相应页面文本显示的乱码;
  2. response.setCharacterEncoding(“utf-8”):如果响应类型为文本,那么就需要设置文本的编码类型,然后浏览器使用这个编码来解读文本。注意,如果没有设置contentType,那么浏览器会认为contentType为text/html,如果没设置编码,那么默认为ISO-8859-1编码。所以以上两点在使用response返回结果之前必须设置。
  3. response.setStatus(200):设置状态码;
  4. response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。

 

3 设置响应头信息

  1. response.setHeader(“contentType”, “text/html;charset=utf-8”):与setContentType()方法的功能相同。setContentType()方法属于便捷方法;

刷新(定时重定向):

  1. 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);

       }

      

}

 

;