ServletResponse为将响应发送到客户端的对象;Servlet 容器创建 ServletResponse 对象,并将它作为参数传递给Servlet的service 方法,如下图 ;

    

ResponseEntity中的响应体转换为response中的响应体 response响应头_客户端

 

    HttpServletResponse对象封装了向客户端发送数据、发送响应头,发送响应状态码的方法;

 

常用API

void setStatus(int sc) 设置此响应的状态代码

void setHeader(String name, String value)  用给定名称和值设置响应头



使用步骤

  1. 创建ResponseServlet;
  2. 调用setHeader,设置消息头;
  3. 调用setStatus,设置响应状态码;

 

常见响应头    

  



location: 重定向操作:通常告知浏览器马上向该地址发送请求,通常和响应码302一起使用; content-encoding: 设置当前数据的压缩格式,告知浏览器以何种压缩格式解压数据; content-disposition: 通知浏览器以何种方式获取数据(直接解析数据(网页,图片文本),或者以附件方式(下载文件); content-type: 实体头部用于指示资源的MIME类型(MIME类型:用于提示当前文件的媒体类型,例如图片——(image/png)、音频——(audio/ogg); 它的作用与传统上Windows上的文件扩展名相同。该名称源于最初用于电子邮件的MIME标准); content-type常用的设置一般都是——“text/html;charset=utf-8”,其中“text/html;”——设置浏览器以文件格式解析数据;“charset=utf-8”——响应数据的编码表;



  

 重定向使用:

    

    实现步骤:

       1.response.setStatus 设置状态码

       2. response.setHeader 设置响应头

       3. response.sendRedirect 重定向

    

    重定向代码实现1:



public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

          //响应码为200表示响应成功,而响应码为302表示重定向;所以完成重定向的第一步就是设置响应码为302;
		response.setStatus(302);

          //因为重定向是通知浏览器再第二个请求,所以浏览器需要知道第二个请求的URL,所以完成重定向的第二步是设置Location头,指定第二个请求的URL地址
		response.setHeader("Location", "http://localhost:8080/hello/BServlet");

	}
}



  

    重定向代码实现2:



public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.sendRedirect("/hello/BServlet");

	}

}



  

    特点:

      1.重定向是客户端行为;
      2.重定向是浏览器做了至少两次的访问请求的;
      3.重定向浏览器地址改变;
      4.重定向2次跳转之间传输的信息会丢失(request范围),不能使用request域对象进行数据共享;
      5.重定向可以指向任何的资源,包括当前应用程序中的其他资源,同一个站点上的其他应用程序中的资源,其他站点的资源;
      注意:传递给HttpServletResponse.sendRedirect 方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录 ;