<%@ include%> 是指令元素,是jsp被转化成servlet的阶段进行的。其中包含的文件,只是简单的将代码嵌入到主文件中,就是在jsp页面转化成Servlet时才嵌入到主文件中,因为运行的结果是只生成了一个Servlet。其中的file属性表示一个实际存在的文件路径,不支持表达式,只能写死。
<jsp:include>如果被包含文件是动态的,那么就会生成两个Servlet,也就是被包含文件也要经过jsp引擎编译执行生成一个Servlet,两个Servlet通过request和reponse进行通信(用的是转发,不是重定向)。如果被包含的文件是静态的,那么这种情况和<%@include>就很相似,只生成了一个Servlet,但是他们之间没有进行简单的嵌入,而依然是通过request和reponse进行的通信。通过page属性指定被包含的页面,支持表达式。