sendRedirect()与forward()方法的异同
相同点:
两者都是进行客户端请求重定向,可以利用另外的资源,如Servlet、JSP、HTML文件等来为客户端进行服务。
不同点:
1、 两者所在的接口不同
sendRedirect()方法来自HttpServletResponse接口,而forwartd()方法来自RequestDispatcher接口。
2、 工作原理不同
sendRedirect()的工作原理如下图所示:
其交互过程是:
浏览器首先访问Servlet1;
Servlet1想交接Servlet2去为客户端服务;
Servlet1调用sendRedirect()方法,通知浏览器,将浏览器重定向到Servlet2;
浏览器访问Servlet2;
Servlet2对客户端进行响应,此时与Servlet1没有关系。
forward()的工作原理如下图所示:
其交互过程是:
浏览器首先访问Servlet1;
Servlet1想交接Servlet2去为客户端服务;
Servlet1调用forward()方法,将请求转发给Servlet2;
Servlet2对请求做出响应。
3、 透明度不同
sendRedirect()方法对用户来说是透明的,浏览器会在响应中设置Location报头,自动完成重定向然后进行新的访问;而forward()方法对浏览器是透明的,浏览器并不知道为其服务的Servlet1已经换成了Servlet2,因为这是在服务器端改变的定向。
4、 发送请求次数不同
使用sendRedirect()方法,浏览器发送了两次请求;而使用forword()方法只发送了一次请求。
5、 响应的URL不同
使用sendRedirect()方法,Servlet1的URL会转到Servlet2的URL;而使用forward()方法,URL始终是指向原始URL。
6、 重定向范围不同
sendRedirect()方法不但可以在位于同一机子上的不同Web程序间进行重定向,还可以将客户端重定向到其他服务器上的Web应用程序。而forward()不能,只能在本机上本Web应用程序里重定向。
sendRedirect()与forward()方法的异同
最新推荐文章于 2020-03-12 13:02:49 发布