JSP静态包含和动态包含

JSP中有两种包含:java

  静态包含:<%@include file="被包含页面"%>;编程

  动态包含:<jsp:include page="被包含页面"flush="true">jsp

二者的区别:spa

   一、<%@ include file=” ”%>是指令元素。<jsp:include page=” ”/>是行为元素对象

  二、最终编译成java文件的数目不一样:编译

      a:静态包含在转换成为java文件的时候将包含文件的内容“复制”到主体文件,而后做为一个总体编译。最终编译为一个java文件。class

      b:动态包含是各个jsp文件分别转换,分别编译。最终编程成多个java文件。变量

  三、执行时间不一样file

      a:静态包含发生在:JSP---->java文件阶段request

      b:动态包含发生在:执行class文件阶段。动态加入。

  四、静态包含在两个文件中不能有相同的变量,动态包含容许:

      因为静态包含至关于将包含文件内容直接复制到主体文件中,若是出现相同的变量,就会出现覆盖等问题,致使文件出错。

      而动态包含至关于调用不一样的jsp,变量所在的空间不一样,天然不会出现覆盖等现象。

  五、不管是动态包含仍是静态包含,其request对象都是相同的。也就是同一个request对象:

      静态包含最终编译成一个java文件,有一个request对象很好理解。而动态包含最终编译成多个jsp文件,为什么会使用一个request对象呢?

      其实这些jsp组合的过程是一个请求转发的过程,天然也使用同一个request对象了。

静态包含和动态包含的使用

  简单总结一下,就一句话:被包含的页面是静态页面就用静态包含,是动态页面就用动态包含。(固然,不是很绝对,可是这样用没有错。)