Include指令是JSP指令元素一种,是在标签处静态插入一个文件。其可以在JSP页面转换成servlet之前,将JSP代码就插入其中。该JSP代码可以在总体上影响主页面的JSP的属性、方法定义和文档类型等的构造设定。相当于将被包含页面的代码复制到主页面。在最后编译时只形成一个class文件。
Include动作是JSP动作元素的一个,是在当前JSP页面动态包含一个文件,即将当前的JSP页面,被包含的文件各自独立编译为两个字节码文件。当执行到该动作标签处时,才加载执行被包含的文件。被包含的文件中不能使用任何会影响主页面构造的代码。
Include指令和动作的差别在于其被调用的时间, include指令在页面转换编译时就已经被激活,相较之更难维护,只要被包含的文件发生了变化,那么就要考虑所有用到这个文件的页面,都需要手动调整。而include动作是在执行时请求了才被激活,由于这个被包含的文件不含有影响主页面的构造,所以它发生了变动后,不用对主页面进行修改。它实际包含的是次级页面的输出结果,而非实际代码。
此外,include指令实现的是静态包含,而include动作实现的是动态包含,前者不能传递参数,后者可以在两个文件之间传递参数。