forward 和redirect 的区别

来源:互联网 发布:虎牙银豆淘宝怎么交易 编辑:程序博客网 时间:2024/06/05 08:18

做javaEE项目时少不了提交信息,跳转目标等一系列与路径相关的操作,而与跳转相关的词汇就会自然而然的跳入人们的视线。像foward和redirect都可以实现跳转,但用法和意义却大不相同,常常因不是很理解它们的不同而困惑,说实话,这也很长时间困惑笔者。很好的区别两者的区别对于处理路径跳转有很大的帮助。

首先,最先说到的是两者作用的容器不同:forward是服务器内部重定向,当程序根据请求跳转到其它实例,客户机不知道,所以当成功达到所要求的目的地时浏览器中的地址还是跳转前的地址;而redirect则是服务器在收到请求后先给用户发一个状态头,然后客户再发一次请求,相比forward这里就多了两次请求,而跳转成功后地址栏中则显示目的地址,这是客户端跳转。奋斗

前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用

sendRedirect()方法。

第二:对于效率来说,forward就相对高点

其次:两者用处(不绝对);forward:一般用于登陆的时候,根据角色的转发到相应的模块奋斗

                                               redirect:一般用于用户注销登陆时返回主页面和跳转到其他的网站等奋斗

最重要的一点是:forward的跳转路径是相对路径,而redirect是绝对路径,这是相当容易错的地方奋斗

原创粉丝点击