struts中的redirect="true"与redirect="false"
Redirect=”true”
浏览器重定向
比喻,就像人在浏览器的地址栏中重新输入了网址,然后转向该网址一样,只是,这个不是由人输入的,是程序控制的而已。
特点:
1. 可以转到任意网页,无论是本站点的,还是别的站点。
例如可以用此方法从自己的网站跳到sohu主页^_^
感觉似乎有点像js的location.href
2. request会被清空
可以理解,你在浏览器里面重新输了一个地址,难道request还能够被传过去吗?
3. form表单中的东东会被清空
即使是跳到同一个页面,form中的东东也会被清空。(连request都没有保住,form中的东东难道还能苟延残喘吗?)
4. 。。。
Redirect=”false”
服务器端跳转
比喻:服务器把用户的请求转到了另一个地方
特点:
1. 只能在一个web服务中跳转
那当然了,你难道还把自己服务的请求(request)转到sohu去吗?人家人都不认识你,理不理你都还不一定呢,不要自作多情
2. request保留
嘿嘿,用redirect=”false”就是冲这个了
3. form表单会保留
同2
用处:
例如,一个修改功能,修改完后,肯定要返回页面咯,若保存的时候出错,返回可以用redirect=”false”,让用户填的东东还在上面,可以修改了再提交。若保存成功,则用户填的那些东东就不用要了,可以redirect=”true”了,把那些东东保留着,还容易让用户错觉觉得没有成功呢
注意事项:
redirect=”true”时,由于request会被清掉,所以提示信息需要保存到session中(保存到哪儿随你啦,反正保存到request中会没掉)
redirect=”false”就没有关系了,request/session随便用,
一般是通过在struts-config.xml中设置redirect="true" 阻止用户连续提交。