MyException - 我的异常网
当前位置:我的异常网» J2SE » 常常问到forward和redirect什么区别

常常问到forward和redirect什么区别

www.MyException.Cn  网友分享于:2015-08-26  浏览:5次
经常问到forward和redirect什么区别?
什么区别?
它们用在什么地方 ?
为什么经常有人纠结着问这个问题。

------解决方案--------------------
前者是服务器跳转,跳转过去的页面那里可以访问request的属性
后者是客户端跳转,相当于用户重新请求一次链接
------解决方案--------------------
探讨
什么区别?
它们用在什么地方 ?
为什么经常有人纠结着问这个问题。

------解决方案--------------------
1.从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容

再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所

以redirect等于客户端向服务器端发出两次request,同时也接受两次response。
------解决方案--------------------
探讨
1.从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容

再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所

以redirect等于客户端向……

------解决方案--------------------
forward 是你打电话 问同事 明天上班不? 你经理就在你同事身边 所以电话没挂 同事问了经理然后告诉你 明天是要上班
redirect 你问同事 明天上班不? 你同事他也不知道 但他告诉了你们经理的电话 让你打电话问经理 然后你就得挂电话 重新打个电话给你经理
------解决方案--------------------
forward跳转,可以访问request请求信息。
redirect跳转,request请求信息丢失
访问机制也不同。redirect实际上执行了两次request请求。第一次能够得到request请求信息,第二次请求信息丢失
------解决方案--------------------
它们都是把一个请求交给另一个 url 

forward 是在服务器端,这种请求可以直接使用原始url的 request 和 response,原始页面提交给你的表单数据可以在被重定向的页面中取到,并且用户在客户端的浏览器地址栏中看到的还是原来请求的 url

redirect 是把服务器把信息返回给客户端,告诉客户端浏览器去请求另一个资源,这种重定向时,客户端浏览器中看到的是重定向之后的 url


换句话说,forward 是在同一个服务器进程中,redirect 是可以跨服务器的。
比如在 http://aaa.bbb.cc 网站中,一般它只可以 forward 网站本身的 url,即:http://aaa.bbb.ccc/...../xxx.jsp,而不能跳到 http://xxx.yyy.zzz 站点的资源。但是 redirect 就可以这样跳



打个比方,如果把联通公司的营业厅比作服务器,那么办理业务的你就是客户端
现在你到联通的营业厅(服务器)的3G开户业务窗口(url)进行3G业务交费

如果窗口的服务员告诉你,她们窗口是办理3G的开户业务,交费是在另一个窗口,请你到那个窗口去办理,这就是 redirect

如果窗口的服务员没有告诉你找错了办理窗口,而是他帮你到管交费的服务员那里帮你把交费业务办理好,再回头给你消息,这就是 forward


------解决方案--------------------
刚看了张孝祥的视频,他是这么说的
forward:就是将请求的处理从别的地方拿过来,然后返回给浏览器
redirect:就是将请求的出来指向另外一个处理请求的地方,即直接告诉别人,让她去找
------解决方案--------------------
楼上说的没错。
forward :就是一种服务器端页面导向的概念,可以传递request和response对象,但只能在同一WEB项目中跳转,对于客户端的体验是没有改变地址栏的地址。
redirect:是一种客户端的重定向概念,不能够传递request和response对象,但可以在整个站点中进行跳转,对于客户端的体验是浏览器上修改了地址栏的地址。

------解决方案--------------------
forward是服务器内部重定向,程序收到请求后重新定向到另一个程序,客户机并不知道;redirect则是服务器收到请求后发送一个状态头给客户,客户将再请求一次,这里多了两次网络通信的来往。当然forward也有缺点,就是forward的页面的路径如果是相对路径就会有些问题了。 

forward 会将 request state , bean 等等信息带往下一个 jsp 
redirect 是送到 client 端后再一次 request , 所以资料不被保留.
使用 forward 你就可以用 getAttribute() 来取的前一个 jsp 所放入的 bean 等等资料

------解决方案--------------------
我向你借10块钱

如果你没钱可借,那么

1、你向你的同学、朋友借了10块钱,然后把这10块钱转借给我,这笔钱应该算是我向你借的,将来还的时候还是还给你,这个叫 forward

2、你对我说:“不好意思,我没钱,但是张三同学很有钱,你找他借吧”。于是我去找张三借钱,这时我借的是张三的钱了,而不是你的钱。这个叫 redirect

文章评论

Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序员和编码员之间的区别
程序员和编码员之间的区别
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
鲜为人知的编程真相
鲜为人知的编程真相
我的丈夫是个程序员
我的丈夫是个程序员
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员的鄙视链
程序员的鄙视链
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
漫画:程序员的工作
漫画:程序员的工作
程序员应该关注的一些事儿
程序员应该关注的一些事儿
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
一个程序员的时间管理
一个程序员的时间管理
10个调试和排错的小建议
10个调试和排错的小建议
程序员都该阅读的书
程序员都该阅读的书
旅行,写作,编程
旅行,写作,编程
每天工作4小时的程序员
每天工作4小时的程序员
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
那些争议最大的编程观点
那些争议最大的编程观点
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
编程语言是女人
编程语言是女人
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
 程序员的样子
程序员的样子
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员必看的十大电影
程序员必看的十大电影
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
代码女神横空出世
代码女神横空出世
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
Java程序员必看电影
Java程序员必看电影
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
如何成为一名黑客
如何成为一名黑客
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
中美印日四国程序员比较
中美印日四国程序员比较
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有