利用JSP的包含机制,可以有效的避免重复,把可重用的部分独立出去,使用include把它们包含到当前文件。JSP有两种包含机制:include指令和<jsp:include>标准动作。
1.include指令
2.<jsp:include>标准动作
3.内部原理
include指令和<jsp:include>标准动作看上去一样,而且通常有相同的效果,但是它们生成的servlet代码并不相同。
include指令在转换时发生,它就像把被包含的文件复制到当前文件一样;<jsp:include>标准动作在运行时发生,它在运行时插入“Header.jsp”的响应。
4.性能比较
如果能够保证所包含的文件不再改变,那就应该使用include指令。不过使用指令会使生成的servlet类较大。
而<jsp:include>标准动作会带来额外的性能开销,容器要根据页面属性创建一个RequestDispatcher,并应用include()方法,所包含的JSP针对同样的请求和响应对象执行,而且在同一线程中。
5.使用<jsp:param>定制包含的内容
如果希望在包含页面时向被包含的页面传递参数,可以使用<jsp:param>传递参数:
如果使用<jsp:include page="Header.jsp"></jsp:include>,即<jsp:include>体为空,则会报错。如果没有体,只能使用<jsp:include page="Header.jsp"/>的形式。
<jsp:param>只能放在<jsp:include>或<jsp:forward>标准动作中。
6.第三种包含内容的方法
使用JSTL的<c:import>标签,也可以将一个资源的内容增加到一个JSP中。不同于另外两种包含机制,<c:import>中的url可以来自web容器范围之外。
用<c:import>和<c:param>标签,可以完成和<jsp:include>和<jsp:param>一样的功能。
使用<c:import>和<c:param>