JaveEE请求转发和重定向的区别

处理流程:

  1. 客户端发送请求,Servlet做出业务逻辑处理。
  2. Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器。

请求转发 请求转发
请求转发

2)重定向: response.sendRedirect(URL地址)

处理流程:

  1. 客户端发送请求,Servlet做出业务逻辑处理。
  2. Servlet调用response.sendReadirect()方法,把要访问的目标资源作为response响应头信息发给客户端浏览器。
  3. 客户端浏览器重新访问服务器资源xxx.jsp,服务器再次对客户端浏览器做出响应。

重定向 重定向
重定向

以上两种情况,你都需要考虑Servlet处理完后,数据如何在jsp页面上呈现。图例是请求、响应的流程,没有标明数据如何处理、展现。

  1. forward()更加高效,在可以满足需要时,尽量使用RequestDispatcher.forward()方法。(思考一下为什么?)
  2. RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。 sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。
处理流程: 客户端发送请求,Servlet做出业务逻辑处理。 Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器。 请求转发 2)重定向: response.sendRedirect(URL地址) 处理流程: 客户端发送请求,Servlet做出业务逻辑处理。 Servlet调用response.sendReadirect()方法,把要访问的目标资源作为response响应头信息发给客户端浏览器。 客户端浏览器重新访问服务器资源xxx.jsp,服务器再次对客户端浏览器做出响应。 重定向 以上两种情况,你都需要考虑Servlet处理完后,数据如何在jsp页面上呈现。图例是请求、响应的流程,没有标明数据如何处理、展现。 forward()更加高效,在可以满足需要时,尽量使用RequestDispatcher.forward()方法。(思考一下为什么?) RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。 sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。


作者:向右奔跑
链接:http://www.jianshu.com/p/29822c2c1ec0

经验分享 程序员 微信小程序 职场和发展