forword的redirect属性

Forward高,  Redirect低, 因为Redirect的流程是这样的,  request 1  sent to server,  server return back to client,  request 2 then sent to server. But Forward 仅在server side处理, 对client side 是透明的. 由于Redirect 有两次传输, 所以效率低.

范围:
由于对request.setAttribute() 来说, 它携带的对象生存范围只在request内, 所以Redirect方式会导致request携带的对象丢失.

 

 

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随便用,

你可能感兴趣的:(Web,浏览器)