JSP基础:包含、跳转指令,以及解决forward传参中文乱码

一.JSP包含指令

        分为静态包含和动态包含

1.1静态包含

       相当于把被包含的文件中的代码插入到要包含他的JSP页面中,不预先做处理,不管后缀是什么。

       使用<%@include file="要包含的文件路径"%>

       静态包含的处理流程:

1.2动态包含

        与静态包含不同的是 动态包含会对被包含的内容先处理再包含,即如果被包含的内容是静态的 处理方式与静态包含相同,如果是动态的则先进行处理,再将结果包含进去

两种传递方式:

1.不传递参数:<jsp:include page = "{要包含的路径|<%=表达式%>}" flush="true|false">
2.传递参数:<jsp:include page= "{要包含的路径|<%=表达式%>}" flush="true|false">
<jsp:param name="参数名称" value="参数内容"/>
...这里可传递多个参数
</jsp:include>

被包含的界面可以使用 request.getParameter()方法来获取传递的参数                     

其中flush可选true和false两个值,如果选择false则表示这个网页需要在全部读进来之后才输出,在每个jsp都有一个buffer,所以如果是true则buffer满了就输出,一般会设置成true 默认值是true。

二.跳转指令

       将一个用户的请求从一个页面传递到另一个页面中即完成跳转,与包含类似,也可以完成参数的传递

两种跳转格式:

1.不传递参数的跳转:<jsp:forward page="{文件路径|<%= 表达式%>}">
2.包含参数的跳转: <jsp:forward page="{文件路径|<%= 表达式%>}">
     	            <jsp:param name="参数名称" value="参数内容"/>
                </jsp:forward>

跳转后的地址栏地址是不变的,所以同错误页一样,利用forward的这中跳转也是服务器端跳转

三.forward中文乱码

        通过forward传递的参数,在接收的页面会出现中文乱码,这是因为编码格式没有约定的原因,因此在<jsp:forward>之前加上一行代码就可以解决了:

<%request.setCharacterEncoding("utf-8");%>