1. 程式人生 > >Jsp 四種跳轉方式

Jsp 四種跳轉方式

四種跳轉方式
request.getRequestDispacher().forward()跳轉:
(1)伺服器端跳轉。
(2)執行後立即跳轉。
<jsp:forward>跳轉:
(1)實際上是對上面 forward 方法的封裝,屬於伺服器端跳轉,跳轉之後位址列不改變。
(2)執行到後立刻跳轉。跳轉之前的語句會執行,跳轉之後的語句將不會執行。如果在 JSP
中使用了 JDBC 的話,必須在跳轉之前進行資料庫的關閉,否則資料庫將無法關閉。

response.sendRedirect()跳轉:
(1)又叫重定向,屬於客戶端跳轉,跳轉之後位址列改變,不傳遞 request 屬性。
(2)在所有語句執行完後才完成跳轉操作。

超連結跳轉:
(1)<a href="chkbox.html">點選這裡</a>
(2)屬於客戶端跳轉
注:兩大類跳轉——伺服器端跳轉與客戶端跳轉區別

伺服器端跳轉是在伺服器內部執行的,無論跳轉多少次都是一次 request,位址列看不到
變化。伺服器跳轉屬於立即跳轉,不會執行跳轉後面的語句。
重定向,其實是兩次 request, 第一次,客戶端 request A,伺服器響應,並 response 回來,
告訴瀏覽器,你應該去 B。這個時候 IE 可以看到地址變了。重定向可以訪問自己 web 應用
以外的資源。在重定向的過程中,傳輸的資訊會被丟失。
舉例:
客戶端跳轉(重定向):你先去了 A 局,A 局的人說:“這個事情不歸我們管,去 B局”,然

後,你就從 A 退了出來,自己乘車去了 B局。
伺服器端跳轉(轉發):你先去了 A 局,A 局看了以後,知道這個事情其實應該 B局來管,
但是他沒有把你退回來,而是讓你坐一會兒,自己到後面辦公室聯絡了 B的人,讓他們辦
好後,送了過來。
2、何時使用 getAttribute()和 getParameter()?
使用 getParameter()表示接收引數,引數來源有以下三種:
(1)表單提交
(2)地址重寫
(3)通過<jsp:include>、<jsp:forward>傳遞而來的引數
前面有 setAttribute(),則使用 getAttribute()。getParameter()無法接收 setAttribute()傳遞來的參

數。
3、解決亂碼方式
(1)Page 指令中的 charset 和 pageEncoding 是設定的當前頁面的使用字符集
(2)request.setCharacterEcoding()是處理客戶端請求是統一編碼
(3)sql 語句中加入:?useUnicode=true&setcharacterEncoding=utf-8 是把插入資料庫的內容
轉碼