转发与重定向

转发

转发是指浏览器发送请求到servlet1之后,servlet1需要访问servlet2,因此在服务器内部跳转到的servlet2,转发有时也称为服务器内跳转。整个过程浏览器只发出一次请求,服务器只发出一次响应。所以,无论是servlet1还是servlet2,整个过程中,只存在一次请求,即用户所提交的请求。因此servlet1和servlet2均可从这个请求中获取到用户提交请求时所携带的相关数据。

重定向

重定向是浏览器发送请求到servlet1之后,servlet1需要访问servlet2,但并未在服务器内直接访问,而是由服务器自动向浏览器发送一个响应,浏览器再自动提交一个新的请求,这个请求就是对servlet2
的请求。
对于servlet2的访问,是先由服务器响应客户端浏览器,再由客户端浏览器向服务器发送对servlet2的请求,所以重定向有时又称为服务器外跳转。
整个过程中,浏览器共提交了两次请求,服务器共发送了两次响应。只不过,第一次响应与第二次请求,对于用户来说是透明的,是感知不到的。用户认为,自己只提交了一次请 求,且只收到了一次响应。

转发和重定向的区别

请求转发

浏览器只发出一次请求,收到一次响应
请求所转发到的servlet2中可以直接获取到请求中所携带的数据
浏览器地址栏显示的为用户所提交的请求路径
只能跳转到当前应用的资源中

重定向

浏览器发出两次请求,接收到两次响应
重定向到的servlet2不能直接获取到用户提交请求中所携带的数据
浏览器地址栏显示的为重定向的请求路径,而非用户提交请求的路径。也正因为如此,重定向的一个很重要作用是:防止表单重复提交
重定向不仅可以跳转到当前应用的其它资源,也可以跳转到到其它应用中资源

转发和重定向的区别

若需要跳转到其它应用,则使用重定向。
若是处理表单数据的Servlet1要跳转到另外的Servlet2上,则需要选择重定向。为了防止表单重复提交。
若对某一请求进行处理的 Servlet 的执行需要消耗大量的服务器资源(CPU、内存),此时这个 Servlet 执行完毕后,也需要重定向。
其它情况,一般使用请求转发。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值