1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说
forward:高.
redirect:低.
forward和redirect的区别很大,forward的意思是向前的、(按新地址)转寄、促进、前锋的意思,而redirect的意思是改变方向、重新寄送。
具体用法如下:
forward
(1)adv.向前;前进地;至将来;提前地
(2)adj.向前方的;迅速的;(社会、政治)进步的;早熟的
(3)vt.促进,助长;(按新地址)转寄;发送
(4)n.前锋
例句:
(1)He came forward with his hand out. 'Mr and Mrs Selby?' he enquired
他走上前去伸出手来。“是塞尔比先生和夫人吗?”他问道。
(2)The best seats are in the aisle and as far forward as possible
最好的座位在过道处,越靠前越好。
(3)Forward of the main cabin are the guest cabins
主舱前面是客舱。
redirect
(1)vt.使改寄,更改(信件等)姓名地址;改变方向,改变线路;重新寄送;再查问(证人等)
(2)adj.再直接的
例句:
(1)Controls were used to redistribute or redirect resources.
采用了管控措施来重新分配资源或改变其流向。
(2)She redirected them to the men's department.
她指引他们去了男装部。
forward和redirect。
举个例子,
forward:
小明数学作业写完了,去交作业,于是交给一个老师,然而这个老师是个语文老师,语文老师郁闷道:“这个同学竟然连我是谁都不知道,真往他屁股踢几下。算了,谁让我那么帅那么善良”。于是语文老师把作业顺手交给数学老师了。
小明虽然作业交到了,但是作业经手语文老师,并不知道实际交给谁了,所以,小明依然是个憨憨。。
但是这个憨憨用这种方式,只需要交一次。所以他效率高。
redirect:
小花,英语单词写完了,去交作业,然而递给正在撸铁体育老师了,,体育老师被打断,那个叫个气,,骂骂咧咧说:“我是体育老师作业交错了”,英语老师是那个女的。
于是小花又屁颠屁颠的去英语老师那交作业了。
小花知道,知道谁是英语老师了,
但是小花交了两次,相比小明,慢了点。
以上仅是个人理解。如有误,欢迎大佬指导。
forward(转发):
1.是服务器内部的重定向,服务器直接访问目标地址的 url网址,把里面的东西读取出来,但是客户端并不知道,因此用forward的话,客户端浏览器的网址是不会发生变化的。
2.关于request: 由于在整个定向的过程中用的是同一个request,因此forward会将request的信息带到被重定向的jsp或者servlet中使用。
redirect(重定向):
1.是客户端的重定向,是完全的跳转。即服务器返回的一个url给客户端浏览器,然后客户端浏览器会重新发送一次请求,到新的url里面,因此浏览器中显示的url网址会发生变化。
2.因为这种方式比forward多了一次网络请求,因此效率会低于forward。