Servlet中forward和redirect方法的区别

转发forward方法和重定向redirect方法都可以实现JSP页面直接的跳转,但是实现的本质是不同的。

区别如下:

forward:当服务器请求资源时,会直接访问目标URL路径,把那个URL路径的响应内容读取过来,然后将其发送给浏览器,浏览器并不知晓响应的内容是从哪儿来的,因此他的地址栏中仍然是原来的地址。另外,转发是web应用程序内部进行的,可以访问web应用程序所设定的内部目录,例如WEB-INF目录下的内容,只能是web应用程序内部进行访问,并不能通过其他的web应用程序来访问该目录下的内容。

 

redirect:是指服务端根据逻辑发送一个状态码,告诉浏览器重新去请求那个地址,一般来说,浏览器会用刚才所有的请求参数重新请求,因此,session和request中的参数都是可以获取到的;而web应用程序会要求客户端浏览器重新发送请求地址,客户端此时会重新连接到指定的URL地址,因此浏览器的地址会出现重新导向的信息,重新导向后的请求由浏览器进行相应的转发,因此不能访问web应用程序下的隐藏目录,例如WEB-INF的地址,就不能进行访问,只有访问web应用程序下的其他地址。

综上所述:

forward仅仅是容器中控制权的转换,客户端浏览器的地址不会显示出转向后的地址,他不会改变request的值,如果下个页面希望获取到某一信息的话,可以在该页面中设置Request.setAttribute(),这样就可以通过request来获取信息。

redirect则是完全的跳转,浏览器会得到跳转后的地址,并且重新发送请求并且连接到该URL地址,这样浏览器会得到请求后的地址。

相比较而言,forward更加高效,如果forward可以满足条件的话就尽量使用forward,这样也可以隐藏实际的连接。当然有时候需要跳转到其他服务器的资源,则必须使用redirect方法。

由此可知,两者之间的区别可从以下四个方面进行概括:

(1)地址栏的变化:forward地址不变,而redirect地址栏变

(2)数据共享:forward在前后转发之间可以共享request中数据,而redirect不能共享数据。

(3)运用的场景:forward一般用于登录,根据角色转发到不同的模块,而redirect一般用于用户注销或者返回主页面或者跳转到其他网站等。

(4)效率:forward的效率更高。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值