Response对象详解

简述

  设置响应行  当web应用接受到http请求的时候,可以通过操作response,然后tomcat就会将该response缓冲区获取响应内容,然后组成响应消息传输给客户端。response对象可以设置响应行、响应头、响应体。

  响应头格式:HTTP/1.1 200 ok

setStatus(int sc)  设置状态码

设置响应头

setHeader(String name, String value)  设置响应头

设置响应体

  我们想设置响应体的话就要先从response对象中获取输出流

PrintWriter getWriter() 字符输出流
ServletOutputStream getOutputStream() 字节输出流

  使用输出流,将数据输出到客户端浏览器

  浏览器收到数据后,会自动解析标签将数据展示出来

实现重定向

  重定向是一种资源跳转方式,是通过各种方法将各种网络请求重新定个方向转到其它位置

  我们可以通过response对象设置状态码和响应头location完成重定向

  重定向的状态码是302,要设置状态码浏览器才知道接下来要重定向

//1.设置状态码为302
response.setStatus(302);
//2.设置响应头location
response.setHeader("location","/要重定向的资源路径");

  我们发现在重定向过程中,设置状态码和响应头location唯一可能需要改变的就是要重定向的资源路径

  所以这两行被封装到一个新方法

response.sendRedirect("新的路径")
重定向

重定向的特点

  1. 地址栏发生变化

  2. 重定向可以访问其他站点(服务器)的资源

  3. 重定向是两次请求。不能使用request对象来共享数据

转发的特点

  1. 转发地址栏路径不变

  2. 转发只能访问当前服务器下的资源

  3. 转发是一次请求,可以使用request对象来共享数据

转发和重定向的路径问题

  转发和重定向都要设置新的路径,这里有个简单理解的规则:

  判断定义的路径是给谁用的?判断请求将来从哪儿发出

  给客户端浏览器使用:需要加虚拟目录(项目的访问路径)
    *建议虚拟目录动态获取:request.getContextPath()
    * <a> , <form> 重定向...
  给服务器使用:不需要加虚拟目录
    * 转发路径

 

一点一点积累,一点一点蜕变!
原文地址:https://www.cnblogs.com/qq2210446939/p/14820770.html