# 跳转指令
[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")`设置参数编码格式,防止中文乱码问题
## 总结
* 地址栏不改变的跳转属于服务器跳转;
* 地址栏改变的跳转属于客户端跳转;
* 一般使用服务器端的跳转进行业务逻辑的处理,完成目标视图的输出。