sendRedirect()与forward()方法的异同

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应用程序里重定向。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值