傍边的同事今天突然问我,jsp:include和<%@include file=""%>区别?
当初在大学时,只是知道一个是动态包含,一个是静态包含,但是更深一层的内容似乎就不理解。看来是需要做出更深一层的研究
jsp:includ指令为动态包含,如果被包含的页面是JSP,则先处理包含的页面尔后再将结果包含进来,而如果包含的是非*.jsp文件,则只是把文件内容静态包含进来,功能也@include类似。
jsp:include在使用时候语法非常严格,有一下两种形式的语法:
语法一:
<jsp:include page="页面">
语法二:
<jsp:include page="页面">
<jsp:param name="参数名称" value="值"/>
</jsp>
举个例子:
<h1>demo01.jsp</h1>
<jsp:include page="content.htm"/>
<jsp:include page="content.txt"/>
<jsp:include page="content.inc"/>
因为以上的jsp:include包含的是静态内容,那么它和<%@include file%>的作用是相同的:
<h1>demo02.jsp</h1>
<%@include file="content.html"%>
<%@include file="content.txt"%>
<%@include file="content.inc"%>
如果是动态内容:
<h1>demo03.jsp</h1>
<h2><%=request.getParameter("ref1")%></h2>
<h2><%=request.getParameter("ref2")%></h2>
以上的页面要接受被包含的页面中传递的两个参数,当然,此页面可以接受更多的参数
建立demo04.jsp,同时向demo03.jsp文件中传递参数
<h1>demo04.jsp</h1>
<%!
public static final String name="zhanqiong";
%>
<jsp:include page="demo03.jsp">
<jsp:param name="ref1" value="hello">
<jsp:param name="ref2" value="<%=name%>">
</jsp:include>
分析完以上的两种的区别,在看看forward的特点
语法一:
<jsp:forward page="页面"/>
语法二:
<jsp:forward page="页面">
<jsp:param name="参数名称" value="值">
.....
</jsp:forward>