首页 > java > jsp > > 正文

JSP中动态include与静态include的区别介绍

发布人:zhoulujun@live.cn    点击:

include与jsp:include区别,我们都知道在jsp中include有两种形式,分别是 前者是指令元素、后者是行为元素。具体它们将在何处用?如何用及它们有什么区别?

动态INCLUDE 


用法:<jsp:include page="included.jsp" flush="true" /> 


说明:它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数,先编译之后再进行处理。 


原因:1、静态include的结果是把其他jsp引入当前jsp,两者合为一体。 


2、静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设置也可以借用主文件的. 

<%@ include file=” ”%>,jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。) 


这里对翻译阶段进行一下说明:我们知道,jsp页面不能原封不动地被传送给浏览器,所有的jsp元素都必须首先由服务器进行处理。这是通过将jsp页面转达化成servlet,然后执行这个servlet来完成的。服务器需要一个jsp容器来处理jsp页面。jsp容器通常以servlet的形式来实现,这个servlet经过配置,可以处理对jsp页面的所有请求。 


Jsp容器负责将jsp页面转化成servlet(称为jsp页面实现类?JSP Page implementation class),并编译这个servlet。这两步就构成了翻译阶段. 


由此我们就会知道:jsp页面是把include指令元素所指定的页面的实际内容(也就是代码段)加入到引入它的jsp页面中,合成一个文件后被jsp容器将它转化成servlet。可以看到这时会产生一个临时class文件和一个java文件。下面举个例子。 


服务器用tomcat,引入页面的jsp文件叫test.jsp。被引入的页面叫date.jsp.这个jsp文件里存放的是一个有关时间的jsp代码,当前的上下文根设为test 

静态INCLUDE 


用法:<%@ include file="included.htm" %> 


说明:用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面,直接将内容先包含后处理。 


原因:1、动态include的结构是两者独立,直到输出时才合并( 看看jsp生成的java文件就可以知道了)。 


2、动态include的jsp文件独立性很强,是一个单独的jsp文件,需要使用的对象,页面设置,都必须有自己创建,当然,还好它和include它的页面的request范围是一致的。


注意:

  (1)被包含的文件中不能含有<html>,</html>,<body>,或</body>标签。因为被包含的文件的全部内容将被插入到JSP文件中include指令所在的地方,这些标签将会同JSP文件中已有的同样的标签发生冲突。 

  (2)假如被包含的文件发声变化,主JSP页面将被重新编译。


上一篇:JSP总结