JSP静态包含(<%@ include>和JSP动态包含<jsp:include>同样都可以用来包含文件,但是他们之间是存在很大差别的。下面将对include指令与include动作的区别进行详细介绍:
● include指令通过file属性指定被包含的文件,并且file属性不支持任何表达式;include动作标识通过page属性指定被包含的文件,而且page属性支持JSP表达式。
● 使用include指令时,被包含的文件内容会原封不动地插入到包含页中,然后JSP编译器在将合成后的文件最终编译成一个Java文件;使用include动作标识包含文件时,当该标识被执行时,程序会将请求转发(注意是转发,而不是请求重定向)到被包含的页面,并将执行结果输出到浏览器中,然后返回包含页,继续执行后面的代码。因为服务器执行的是多个文件,所以JSP编译器会分别对这些文件进行编译。
● 在应用include指令包含文件时,由于被包含的文件最终会生成一个文件,所以在被包含文件、包含文件中不能有重名的变量或方法;而include动作标识包含文件时,由于每个文件时单独编译的,所以在被包含文件和包含文件中重名的变量和方法是不冲突的。