论坛首页 Java企业应用论坛

Forward 与 Redirect 两种方式对比

浏览 50942 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2004-03-15  
muziq:
除了必须要用redirect ,否则我都会用forward,说到性能,我再说一下吧,redirect后就算不经过filter,也会存在网存这种东东(毕竟一请求一响应,可能要经过多段络网)。

当然,上面我都说过啦,"避免产生耦合的可能" 不是靠forward 与 redirect来决定的。

关于转发后的地址为什么不能让用户看到,嘻嘻(卖个关子,其实是自己也不懂,我要想一下怎么反驳你)。

1.可以屏蔽你的技术(让用户不知道你是否是用了java开发),例如:把所有的url映射为.aspx 或者 asp 或者干脆就没有后缀。。
2.有一些页面是不能让用户看到的(如果用户知道这个url之后可能会直接不经过某些步骤就进来啦,这样子会出错,或者受到攻击),用forward能很好的屏蔽掉这个url。

等等(其实我也说不清楚,你可以到网上搜一下,或者看一下关于黑客的一些伎俩人。

引用

不知道你说的“新增才有的问题”是什么意思。


是因为如果刷新这个url的话,将会再次提交(当然你可以用程序的各种方法来进行控制,例如:session保存版本号或者一个时间截,js控制不能刷新等)。

当然不是说redirect没有用处,当要在不同的context中进行转发就可以用它啦。

还要就是一个forward比较好的地方就是forward可以把对象传过去,redirect只能传字符串。。

请跟贴。。
(说错了,就骂/p,不同意请贴)
0 请登录后投票
   发表时间:2004-03-16  
你們都很清楚 Redirect 和 Forward 的差異
這點都是正確的 ^^~

假設最後一個提交是新增

我以 Struts 為例子
1. (http) -> orderAction - (forward ) -> order.jsp
在頁面顯示 order.do , 填完表單提交
2.(http)-> insertAction -(foward)-> insert.jsp
insertAction 新增完成後, 在頁面上會顯示 insert.do

如果 此時按下 Reload 將會 重新發出 insertAction 的 request, 將會產生重複提交

這要怎麼檔呢
1. 在 insert.jsp redirect 到其他頁面
2. 在 orderAction 建立 token, 並且產生 tokenId 給予 order.jsp, 在 insertAction 檢查 token合法性之後, 重新建立新的 token.

最後強調
forward 和 redirect 並沒有誰好誰差
應該是用途不同
如果單純是一個 Context 的時候
幾乎都是採用 forward.
我大概只會因為 servet 2.3 不支援 servlet 做為 welcome-file 條件下 才會使用 jsp redirect 到我的 servlet
但是在使用 identity authentication/authorization 就都是使用 URL rewriting 做 redirect 判斷
0 请登录后投票
   发表时间:2004-03-16  
jini说的不错!
0 请登录后投票
   发表时间:2004-03-17  
jini:
你说得没有错.
其实你说的,我们上面都已经说过啦.

我很想知道为什么login后要用redirect呢??

真是不明白??难道你们进去后不是个人工作区吗(一个显示与个人工作有关的页面)??
而是一个提示:登录成功!
不可能吧???
0 请登录后投票
   发表时间:2004-03-17  
xiaoyu 写道
jini:
你说得没有错.
其实你说的,我们上面都已经说过啦.


:lol:  我有寫大家都知道了呀 

xiaoyu 写道

我很想知道为什么login后要用redirect呢??

真是不明白??难道你们进去后不是个人工作区吗(一个显示与个人工作有关的页面)??
而是一个提示:登录成功!
不可能吧???


using Identity server for SSO.
0 请登录后投票
   发表时间:2004-03-19  
jini:
引用
using Identity server for SSO.



能不能说得清楚点呢??

谢谢啦...
0 请登录后投票
   发表时间:2004-03-19  
xiaoyu 写道
jini:
引用
using Identity server for SSO.



能不能说得清楚点呢??

谢谢啦...



http://wwws.sun.com/software/products/identity_srvr/home_identity.html

Identity Server.

If u wanna make the CDSSO ( Cross Domain Singal SignOn )

You need to use redirect for authentications.

You can read some docs from docs.sun.com or liberty project.

Of course, if ur system is small . Ingore what i ever said ^^"
0 请登录后投票
   发表时间:2004-03-19  
jini说得很对
0 请登录后投票
   发表时间:2004-03-23  
因为最近忙,sorry.
关于那个URL的东东,我看了.我觉得和redirect有什么关系呢??

它只是一个关于如何进行验证的东东而罢了(可以说是权限控制).

不知道我了解的对不对呢(本人的E文不太好).
0 请登录后投票
   发表时间:2004-03-24  
有的BBS要求先登陆再进入论坛,那么在登陆后用redirect是一个比较好的选择,下次按刷新的时候就不会再弹出个重新发送请求的提示框。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics