日期:2014-05-16  浏览次数:20366 次

JSP中两个include的区别

????? 我们知道,在JSP中包含一个文件可以有两种做法,分别为:<%@ include file=""%>和<jsp:include page=""/>

既然这两者都是包含,那么到底有什么区别呢?

????? 其一:<%@ include file=""%>是包含静态文件,而<jsp:include page=""/>是包含动态文件。

????? 其二:<%@ include file=""%>可以包含任何类型的文件,所以叫file,而<jsp:include page=""/>只是包含jsp文件。所以叫page。

????? 其三:<%@ include file=""%>是在编译时将目标文件简单的和源文件进行合并编译,而<jsp:include page=""/>则是在运行时调用目标文件,也就是说把目标文件的运行结果包含进来。

?

????? 最简单的例子,如果在目标文件中定义了一个变量int i=0;而在源文件中也定义了一个int i=1;那么使用<%@ include file=""%>就会报错,提示变量重复定义。这是因为<%@ include file=""%>会把目标文件包含进来一起进行编译,这时就会有两个i的定义,当然通不过编译。而如果使用<jsp:include page=""/>就没事。因为<jsp:include page=""/>是把目标文件和源文件分别进行编译,然后将结果进行包含。

????? 如果编译后查看tomcat的work目录下的编译文件就会发现<jsp:include page=""/>有两个编译文件,分别是源文件的和目标文件的,说明他俩是分别编译和执行的,是独立的。而<%@ include file=""%>就只有一个编译结果,说明他们是整合之后一起编译的。这就是两者最大的区别。