整个JSP中一共有两种包含。
1 包含的意义
从一般正常的页面组成一般分为四个区域,左边工具栏 页头 具体内容 页尾内容。但是真正改变的地方一般只是具体内容的改变,比如搜狐网站,因为根据用户浏览的不同,那么肯定在这个上面存在差别,现在就有两种做法实现上一种功能。
方法一:在每个JSP(HTML)都包含工具栏,头部信息,尾部信息,具体内容
方法二:将工具栏,头部信息,尾部信息都分成独立的文件 用的时候导入进来。
用第二种显然更好,因为以后修改起来更容易。
在JSP中如果要实现包含操作会有两种做法:静态包含和动态包含
2 静态包含
语法<%@ include="要包含的文件路径"%>这个代码类似page指令
下面我们演示这些程序
首先,建立两个文件,一个为HTML文件info.htm,另一个为jsp文件info.jsp,然后再建一个includedemo.jsp
<%@ include file="info.htm" %>
<%@include file="info.jsp" %>
3 动态包含
首先,我想声明一点,不管是静态包含,还是动态包含,注意一点,核心包含。
语法:使用<jsp:include>指令可以完成动态包含的操作,与之前的静态包含不同,动态包含语句可以自动区分被包含的页面是静态的还是动态的。
动态包含语法:
不传递参数:page里面可能是静态的(.HTML)也可能是动态的(.jsp)
<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|false"/>
传递参数:
<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|false">
<jsp:param name="参数名称" value="参数内容"/>
...... 可以向被包含的页面传递多个参数
</jsp:include>
只要以<> 出现的 JSP代码都称为标签指令,所有的标签必须完结
动态包含的语法多了自动检验的功能,可以完成动态文件和静态文件的区分。语法有两种,有参数和不穿参数 ( flush="true|false"及时的刷新或输出) 传递参数,新建一个receive.jsp
<h1>参数一:<%=request.getParameter("name") %></h1>
<h1>参数二:<%=request.getParameter("info") %></h1>
此时接收的是从标签中传过来的参数
在includedemo2.jsp 第一个name是属性名
<jsp:include page="receive.jsp">
<jsp:param name="name" value="tlh"/>
<jsp:param name="info" value="121lnxsnlk"/>
</jsp:include>
注意 每个标签都要写结束符号呀!!!但是一个新的问题出现,如果希望传递的内容是变量怎么办 ?要传变量必须用表达式的输出完成
<%
String username="llll"; %>
<h1>动态包含</h1>
<jsp:include page="receive.jsp">
<jsp:param name="name" value="<%=username %>"/>
<jsp:param name="info" value="121lnxsnlk"/>
</jsp:include>
4 该使用哪种语句?
当然是哪个容易,使用哪个。这个我就不举例子了。静态包含先包含后处理,动态是先处理后包含,第二种更实用。因为在开发中很多的变量名是相同的,因此我们一般用动态包含。通过包含可以把重复的代码重复使用。
OVER!