主要有两个方面的不同;
一:执行时间上:
<%@ include file=”relativeURI”%> 是在翻译阶段执行,静态,执行速度较快.
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行,动态,执行速度较慢.
二:引入内容的不同:
<%@ include file=”relativeURI”%>
引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本.
另外在两种用法中file和page属性都被解释为一个相对的URI.
第一种之所以执行速度快,是因为它等同于内容替换,虽然是一个文件包含另一个文件,但在编译成class之前,二者已经合为一体,只产生一个class文件.
而第二种则会产生多个class文件,执行到包含部分时,被包含者返回的是处理之后的内容而非原文.这相当于主文件向被包含文件发送请求并得到它的响应.
第二种虽然比第一种慢,但它也有它的优势.
1.因为是动态的,所以如果修改了被包含文件的内容,主文件不需要重新编译.
2.第二种可以使用param子标记,可以更加灵活的处理文件内容(可以往里面传值然后返回不同的响应).要接收传进来的值可以使用:
request.getParameter();