sendRedirect()和forward()方法的区别

读书笔记

javax.servlet.http.HttpServletResponse接口中的sendRedirect()方法

javax.servlet.RequestDispatcher接口中的forward()方法

二者皆可以利用别的资源(Servlet,JSP,HTML)来为客户端进行服务(service);但二者有着本质的区别

二者的工作原理图:

sendRedirect()和forward()方法的区别

(转载图片)

sendRedirect()和forward()方法的区别

转载图片

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应用程序资源。