include指令与include动作

《Java Web从入门到精通》一书中关于include指令与动作的区别,记录在此。

1.include指令通过file属性指定被包含的文件,并且file属性不支持任何表达式;jsp:include动作标志通过page属性置顶被包含的文件,而且page属性支持JSP表达式。

2.使用include指令时,被包含的文件内容会原封不动地插入到包含页中,然后JSP编译器再将合成后的文件最终编译成一个Java文件;使用jsp:include动作标志包含文件时,当标志被执行时,程序将会请求转发(注意是转发,而不是请求重定向)到被包含的页面,并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码。因为服务器执行的是多个文件,所以JSP编译器会分别对这些文件进行编译。

3.在应用include指令包含文件时,由于被包含的文件最终会生成一个文件,所以被包含文件、包含文件中不能有重名的变量或者方法;而在应用jsp:include动作标志包含文件时,由于每个文件都是单独编译的,所以在被包含文件中重名的变量和方法都是不相冲突的。

也就是说。include指令实际上是把我所创建的三个页面的代码都给拼到了一起。实际上就会重复 这样能不报错么?

而使用jsp:include相当于,并非强制性的拼凑,而是各干各的,互不影响。所以才能运转正常。

QA: 什么时候使用动作 什么时候使用指令呢

include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改,否则视为已被修改。
由于被包含的文件是在编译时才插入的,因此如果只修改了include文件内容,而没有对JSP修改,得到的结构将不会改变,所以直接执行已经存在的字节码文件,而没有重新编译。

因此对不经常变化的内容,用include指令是合适的,如果需要的内容是经常变化的,则需要动作元素jsp:include.
使用include指令,如果被包含的文件发生改变,那么,用到它的所有Jsp页面都需要更新。
  仅当include动作不能满足要求时,我们才应该使用include指令。
  有些开发人员认为include指令生成的代码执行起来比使用include动作的代码更快。尽管原则上由可能的确如此,但性能上的差异很小,以致难以测 量,同时,include动作在维护上的优势十分巨大,当两种方法都可以使用时,include动作几乎肯定是首选的方法。
  对于文件包含,应该尽可能地使用include动作。仅在所包含的文件中定义了主页面要用到的字段或方法,或所包含的文件设置了主页面的响应报头时,才应该使用include指令。

posted @ 2017-05-21 17:34  heartbeatsong  阅读(376)  评论(0编辑  收藏  举报