forward和redirect

Servlet中有两种实现跳转的方式:forward方式和redirect方式。

  • forward:请求转发,是一种服务器的行为,客户端只有一次请求,服务器端转发后会将请求对象保存,地址栏中的URL地址不会改变,得到响应后服务器端再将响应发给客户端;
  • redirect:请求重定向,即response.sendRedirect(),是一种客户端行文,从本质上讲等同于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变。

举个例子来说就是,小明去办个证,首先去了A办事处,但是A办事处不受理这项事务,可是A事务处的人好啊,他们知道B办事处可以办,所以自己带着A的资料去B办事处办了业务,拿回了证件,再转交给小明。
再有一种情况,小明去办证,首先去了A办事处,A办事处的人告诉小明说“这个我们办不了,你得去B办事处”,然后小明就去了B办事处,最后在B办事处办好了证。
对比两种情况,前者,小明只做出了一次请求,后者小明做出了两次选择;前者,小明不知道A办事处不能办这个业务,不知道最后是B办事处给他办的业务,后者,小明知道了B办事处的地址,自己重新去找B办事处办的。

前者的情况就像是请求转发的过程,后者就像是重定向的过程。

  • forward
    forward是服务器内部的重定向,服务器直接访问目标地址的URL,把那个URL的相应内容读取过来,而客户端不知道,因此在客户端浏览器的地址栏中不会显示转向后的地址还是原来的地址。
    由于在整个定向的过程中使用的是同一个request,因此forward会将request的信息带到被定向的JSP或Servlet中使用。

  • redirect
    redirect则是客户端的重定向,是完全的跳转,即客户端浏览器会获取到跳转后的地址,然后重新发送请求,因此浏览器中会显示跳转后的地址。同时,这种方式比forward多了一次网络请求,因此效率要低于forward方式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值