# 跳轉指令
[TOC]
在之前學習的跳轉中,都是客戶端瀏覽器發起的頁面跳轉,可以 A 標簽、Submit按鈕提交、或者 JavaScript 腳本去完成。
## jsp:forward
使用 jsp:forward 進行服務器端的頁面跳轉。
~~~
<%
String ageStr = request.getParameter("age");
String name = request.getParameter("name");
int age = Integer.valueOf(ageStr);
if (age < 18) {
%>
<jsp:forward page="n18.jsp?name=<%=name %>"/><!--可能無法獲取-->
<%
} else {
%>
<jsp:forward page="y18.jsp">
<jsp:param value="<%=name %>" name="name"/>
</jsp:forward>
<%
}
%>
~~~
>[info] jsp:forward 屬于服務器內部的請求跳轉,不會在瀏覽器的地址欄留下任何跳轉的痕跡。
> jsp:forward 動作指令之后的代碼是不會執行的。
## 參數定義
使用 jsp:param 標簽傳遞參數。
對于在瀏覽器地址欄中直接輸入中文參數,可能會因為瀏覽器的編碼問題導致中文參數出現亂碼問題。
如果在jsp頁面傳遞參數,可以使用`request.setCharacterEncoding("UTF-8")`設置參數編碼格式,防止中文亂碼問題
## 總結
* 地址欄不改變的跳轉屬于服務器跳轉;
* 地址欄改變的跳轉屬于客戶端跳轉;
* 一般使用服務器端的跳轉進行業務邏輯的處理,完成目標視圖的輸出。