指令是编译阶段的指令,即include包含的文件的内容是编译的时候插入到JSP文件中去的,因此,如果只修改了include文件的内容,而没有对JSP进行修改,得到的结构将不会改变,所以直接执行已经存在的字节码文件,而没有重新编译。因此,对不常变化的内容,用include指令是合适的,如果需要的内容是经常变化的,则需要JSP动作。
一、JSP指令
include在JSP页面转换成servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。他的缺点是难于维护,只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改。语法:<%@ incude file="jspName.jsp"%>
二、include动作
jsp动作是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能包含有JSP,但这些页面可以使其他资源所产生的结果。服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面, 将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。他的优点是在被包含的页面发生更改时,无须对主页面作出修改。它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。有参数语法:<jsp:include page="jspName.jsp" flush="true">
<jsp:param name="name" value="value" />
</jsp:include>
无参数语法:<jsp:include page="jspName.jsp" flush="true"/>
三、使用include动作还是include指令?
1.使用include指令,如果被包含的文件发生改变,那么,用到它的所有Jsp页面都需要更新。2.仅当include动作不能满足要求时,我们才应该使用include指令。