在做前臺(tái)開發(fā)過(guò)程中你可能經(jīng)常遇到關(guān)于轉(zhuǎn)發(fā)頁(yè)面得操作,很顯然的就想到了forward和redirect,但是到底用哪一個(gè)呢,他們之間有什么區(qū)別呢,現(xiàn)在我將我自己的理解以及開發(fā)的時(shí)候怎么應(yīng)用寫出來(lái)供大家參考一下:
(1) 共同點(diǎn):
都實(shí)現(xiàn)了根據(jù)自己的條件實(shí)現(xiàn)的頁(yè)面得跳轉(zhuǎn)。
(2) 區(qū)別
類別
|
概念
|
共享數(shù)據(jù)
|
應(yīng)用
|
Redirect
|
URL重新定向:可以是任意的URL
|
不能共享request里面的數(shù)據(jù)
|
一般用于用戶注銷登錄時(shí)返回主頁(yè)面和跳轉(zhuǎn)到其它的網(wǎng)站等等
|
Forward
|
頁(yè)面的轉(zhuǎn)發(fā):只能是同一個(gè)Web應(yīng)用程序的其他Web組件
|
轉(zhuǎn)發(fā)頁(yè)面和轉(zhuǎn)發(fā)到的頁(yè)面可以共性request里面的數(shù)據(jù)
|
一般用于用戶登錄的時(shí)候根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊等等
|
(3) 例子:
譬如:client 通過(guò)XXX\index.jsp?name=gauss&pwd=123訪問index.jsp,而index.jsp中有<jsp:forward page="login.jsp"/>,則在login.jsp中可以通過(guò)request.getParameter()得到name和pwd,而<%response.sendRedirect("login.jsp");%>得不到。
(4) 注意
一般在index.jsp頁(yè)面之前有個(gè)提交數(shù)據(jù)的頁(yè)面default.jsp,則defautl.jsp頁(yè)面提交的數(shù)據(jù)就可以在login.jsp頁(yè)面得到,而不是得到index.jsp頁(yè)面提交的數(shù)據(jù),index.jsp頁(yè)面只是執(zhí)行的都是一個(gè)轉(zhuǎn)發(fā)操作當(dāng)然在里面可以增加也寫業(yè)務(wù)操作,他可以得到request的數(shù)據(jù),用XXX\index.jsp?name=gauss&pwd=123這種方式登錄就是省略了index.jsp前面的一個(gè)頁(yè)面提交數(shù)據(jù)而已