[摘錄]Forward與Redirect區別
摘錄地址:http://blog.csdn.net/gauss2008/archive/2006/06/18/809765.aspxForward與Redirect
在做前臺開發過程中你可能經常遇到關于轉發頁面得操作,很顯然的就想到了forward和redirect,但是到底用哪一個呢,他們之間有什么區別呢,現在我將我自己的理解以及開發的時候怎么應用寫出來供大家參考一下:
(1) 共同點:
都實現了根據自己的條件實現的頁面得跳轉。
(2) 區別
類別
|
概念
|
共享數據
|
應用
|
Redirect
|
URL重新定向:可以是任意的URL
|
不能共享request里面的數據
|
一般用于用戶注銷登錄時返回主頁面和跳轉到其它的網站等等
|
Forward
|
頁面的轉發:只能是同一個Web應用程序的其他Web組件
|
轉發頁面和轉發到的頁面可以共性request里面的數據
|
一般用于用戶登錄的時候根據角色轉發到相應的模塊等等
|
(3) 例子:
譬如:client 通過XXX\index.jsp?name=gauss&pwd=123訪問index.jsp,而index.jsp中有<jsp:forward page="login.jsp"/>,則在login.jsp中可以通過request.getParameter()得到name和pwd,而<%response.sendRedirect("login.jsp");%>得不到。
(4) 注意
一般在index.jsp頁面之前有個提交數據的頁面default.jsp,則defautl.jsp頁面提交的數據就可以在login.jsp頁面得到,而不是得到index.jsp頁面提交的數據,index.jsp頁面只是執行的都是一個轉發操作當然在里面可以增加也寫業務操作,他可以得到request的數據,用XXX\index.jsp?name=gauss&pwd=123這種方式登錄就是省略了index.jsp前面的一個頁面提交數據而已
摘錄補充:
效率:
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攜帶的對象丟失.
總結: 一般還是用Forward比較合適.
|
|
歡迎大家訪問我的個人網站 萌萌的IT人
posted on 2007-12-10 11:05 見酒就暈 閱讀(468) 評論(0) 編輯 收藏 所屬分類: J2EE文章