sendRedirect()和forward()方法的区别
读书笔记
javax.servlet.http.HttpServletResponse接口中的sendRedirect()方法
javax.servlet.RequestDispatcher接口中的forward()方法
二者皆可以利用别的资源(Servlet,JSP,HTML)来为客户端进行服务(service);但二者有着本质的区别
二者的工作原理图:
(转载图片)
转载图片
sendRedirect()方法:至少产生两次请求
1.浏览器访问Servlet1
2.Servlet1让Servlet2为客户端服务
3.Servlet1调用sendRedirect()方法,将客户端的请求重定向到Servlet2(告知浏览器Servlet2的位置,让浏览器重新访问Servlet2,浏览器地址栏的URL变为重定向后的URL)
4.浏览器访问Servlet2
5.Servlet2对客户端请求做出响应
forward()方法:一次请求
1.浏览器访问Servlet1
2.Servlet1让Servlet2为客户端服务
3.Servlet1调用forward()方法,将客户端的请求转发给Servlet2进行处理(浏览器显示的URL始终是原始请求的URL)
4.Servlet2对请求做出响应
此外,sendRedirect()方法不仅可以在位于同一主机上的不同web应用程序之间进行重定向,而且可以将客户端重定向到其它服务器上的web应用程序资源。