關(guān)于JSP實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的方法大家了解多少呢?今天錯(cuò)新小編就為大家詳細(xì)介紹關(guān)于JSP實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的方法,如果你也感興趣的話不妨一起去了解了解具體內(nèi)容吧。
?實(shí)現(xiàn)JSP頁(yè)面跳轉(zhuǎn),有如下幾種方式:
n??????? 使用href超鏈接標(biāo)記????????????? (客戶端跳轉(zhuǎn))
n??????? 使用JavaScript???????????????????????????? (客戶端跳轉(zhuǎn))
n??????? 提交表單????????????????????????????????????? (客戶端跳轉(zhuǎn))
n??????? 使用response對(duì)象??????????????????????????? (客戶端跳轉(zhuǎn))
n??????? 使用forward動(dòng)作標(biāo)記???????????????? (服務(wù)器端跳轉(zhuǎn))
n??????? 使用RequestDispatcher類???? (服務(wù)器端跳轉(zhuǎn))
1、使用response對(duì)象
?????? (1) 調(diào)用sendRedirect()方法,重定向。
注意以下兩點(diǎn):
???????? sendRedirect()可以帶參數(shù)傳遞
例如:
sendRedirect(“/main.jsp?userName=zhangsan”
???????? sendRedirect()之后,應(yīng)該緊跟一句return
sendRedirect()是通過(guò)瀏覽器來(lái)做轉(zhuǎn)向的,所以只有在頁(yè)面處理完成后,才會(huì)有實(shí)際的動(dòng)作。既然你已經(jīng)要做轉(zhuǎn)向了,那么后面的輸出還有什么意義呢?而且有可能會(huì)因?yàn)楹竺娴妮敵鰧?dǎo)致轉(zhuǎn)向失敗。
?????? (2) 調(diào)用setHeader()方法,等待若干秒后,自動(dòng)重定向到另一個(gè)頁(yè)面。?
?????? 可以通過(guò)response對(duì)象,調(diào)用setHeader(“Refresh”, “時(shí)間; 目標(biāo)頁(yè)面”)方法,實(shí)現(xiàn)等待若干秒后,自動(dòng)重定向到另一個(gè)頁(yè)面。
response.setHeader("Refresh", "10; url=login.jsp"); ?
上述代碼表示等待10秒后,將自動(dòng)重定向到login.jsp這個(gè)頁(yè)面。
2、使用forward動(dòng)作標(biāo)記
response重定向和forward跳轉(zhuǎn)的區(qū)別
(1) response重定向
n??????? 執(zhí)行完頁(yè)面的所有代碼,再跳轉(zhuǎn)到目標(biāo)頁(yè)面。
n??????? 跳轉(zhuǎn)到目標(biāo)頁(yè)面后,瀏覽器地址欄中的URL會(huì)改變。
n??????? 在瀏覽器端重定向。
n??????? 可以跳轉(zhuǎn)到其它服務(wù)器上的頁(yè)面,
例如:response.sendRedirect(“http://www.baidu.com”)
(2) forward跳轉(zhuǎn)
n??????? 直接跳轉(zhuǎn)到目標(biāo)頁(yè)面,其后的代碼不再執(zhí)行。
n??????? 跳轉(zhuǎn)到目標(biāo)頁(yè)面后,瀏覽器地址欄中的URL不會(huì)改變。
n??????? 在服務(wù)器端重定向。
n??????? 無(wú)法跳轉(zhuǎn)到其它服務(wù)器上的頁(yè)面。?
3、使用RequestDispatcher類
基本用法:
RequestDispatcher rd = request.getRequestDispatcher("目標(biāo)頁(yè)面");rd.forward(request,response);使用RequestDispatcher實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn),和使用forward動(dòng)作標(biāo)記實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn),其基本原理是一樣的。
response重定向和RequestDispatcher跳轉(zhuǎn)的區(qū)別
(1) response重定向
n??????? 執(zhí)行完頁(yè)面的所有代碼,再跳轉(zhuǎn)到目標(biāo)頁(yè)面。
n??????? 跳轉(zhuǎn)到目標(biāo)頁(yè)面后,瀏覽器地址欄中的URL會(huì)改變。
n??????? 在瀏覽器端重定向。
n??????? 可以跳轉(zhuǎn)到其它服務(wù)器上的頁(yè)面,
例如:response.sendRedirect(“http://www.baidu.com”)?
(2) RequestDispatcher跳轉(zhuǎn)
n??????? 執(zhí)行完所有代碼,再跳轉(zhuǎn)到目標(biāo)頁(yè)面。
n??????? 跳轉(zhuǎn)到目標(biāo)頁(yè)面后,瀏覽器地址欄中的URL不會(huì)改變。
n??????? 在服務(wù)器端重定向。
n??????? 無(wú)法跳轉(zhuǎn)到其它服務(wù)器上的頁(yè)面。?
forward跳轉(zhuǎn)和RequestDispatcher跳轉(zhuǎn)的區(qū)別
(1) forward跳轉(zhuǎn)
n??????? forward動(dòng)作標(biāo)記之后的代碼,不再執(zhí)行,立即跳轉(zhuǎn)到目標(biāo)頁(yè)面。
n??????? 指定目標(biāo)頁(yè)面時(shí),既可以使用絕對(duì)路徑,也可以使用相對(duì)路徑。?
(2) RequestDispatcher跳轉(zhuǎn)
n??????? 執(zhí)行完所有代碼,包括RequestDispatcher之后的所有代碼,再跳轉(zhuǎn)到目標(biāo)頁(yè)面。
n??????? 指定目標(biāo)頁(yè)面時(shí),只能使用絕對(duì)路徑。
以上所述是小編給大家介紹的JSP實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的方法,希望對(duì)大家有所幫助,如果大家有疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
新聞熱點(diǎn)
疑難解答
圖片精選