转发和重定向的区别

转发和重定向区别

转发

forward,由服务器发出,把request、response处理权转交给其他客户端,并不会失效
客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的页面,在一个请求里完成

//转发,转发是在服务器端转发的,客户端是不知道的
request.getRequestDispatcher("/index.jsp").forward(request, response);

重定向

sendRedirect,由客户端发出,请求servlet,request会失效
客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问新页面,紧接着客户端受到这个请求后,立刻发出一个新的请求

//重定向,不会共享request
response.sendRedirect("/student_list.jsp");
response.sendRedirect(request.getContextPath() + "/student_list.jsp");
  • 转发在服务器端完成的;重定向是在客户端完成的
    转发的速度快;重定向速度慢

  • 转发的是同一次请求;重定向是两次不同请求

  • 转发不会执行转发后的代码;重定向会执行重定向之后的代码

  • 转发地址栏没有变化;重定向地址栏有变化

  • 转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

  • 本文作者: dzou | 微信:17856530567
  • 本文链接: http://www.dzou.top/post/67d1f796.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!