forward和redirect的区别
forward
和
redirect
的区
别
答:
forward
是服
务
器
请
求
资
源,服
务
器直接
访问
目
标
地址的
URL
,把那个
URL
的响
应
内容
读
取
过
来,然后把
这
些内容再
发给浏览
器,
浏览
器根本不知道服
务
器
发
送的内容是从哪儿来的,所以它的地址
栏
中
还
是原来的地址。
redirect
就是服
务
端根据
逻辑
,
发
送一个状
态码
,
告
诉浏览
器重新去
请
求那个地址,一般来
说浏览
器会用
刚
才
请
求的所有参数重新
请
求,所以
session,request
参数都可以
获
取
前者
仅
是容器中控制
权
的
转
向,在客
户
端
浏览
器地址
栏
中不会
显
示出
转
向后的地址;后者
则
是完全的跳
转
,
浏览
器将会得到跳
转
的地址,并重新
发
送
请
求
链
接。
这样
,从
浏览
器的地址
栏
中可以看到跳
转
后的
链
接地址。所以,前者更加高效,在前者可以
满
足需要
时
,尽量使用
forward()
方法,并且,
这样
也有助于
隐
藏
实际
的
链
接。
在有些情况下,比如,需要跳
转
到一个其它服
务
器上的
资
源,
则
必
须
使用sendRedirect()方法。
a
页
面
-------->b
页
面
(-->
代表两
种
方法的一
种
)
a
页
面里有一个
动
作:
request.setAttribute("temp",object);
Response.forward()---->用
这
个方法到达
b,可以在b里通
过
request.getAttribute("temp")得到存
储
的
object
对
象,
这
个方法
扩
大了
request里保存的
值
的作用范
围
;
Response.redirect()---->用
这
个方法到达
b,object
对
象将
丢
失。
如果想到达b页面(无论是哪个方法)而有想得到object对象,则最好将object对象保存在request.getSession()里,也就是Session对象里
转载:http://blog.csdn.net/senmon2004/article/details/654049