1 、动态include和静态include
1)动态include用jsp:include动作实现<jsp:include page = "include.jsp" flush = "true"它总是会检查所包含的文件中的变化,适合用于包含动态页码,并且可以带参数。各个文件分别先编译,然后组合成一个文件。简而言之,jsp动作实现,不共享request请求域,先编译后包含,检查变化。当请求jsp界面时,实现运行的是编译文件class。两个Java文件,生成多个class文件。可以有相同变量。
动态include优点
A.引入和同步一个动态的界面,使得jsp界面更灵活
B. 能和不同界面之间进行信息的交互和快捷的实现方式
C. 改变了原始界面编码放在一个jsp上,使不同功能分别写在不同页面里,通过动态引用到界面,更易于编码,更易于管理。
动态include不足
动态引入时需要频繁变化和界面信息的更新和交互,要占用大量的资源开销,降低页面的访问速度。
注意:
a. <jsp:include>动作的flush属性必须要定义,不定义会出现转换错误。而且要设置的flush必须为true;
b. 在<jsp:include>动作中制定的界面必须是同一个web应用程序的一部分,如果引入非同一个web应用的界面将会导致请求错误。
2)静态include用include伪代码实现,定不会检查所含文件的变化,适用于包含静态界面<%include file="include.htm"%>。先将文件代码原封不动加入到主界面,合成一个文件,然后再进行翻译,此时不允许有相同的变量。简而言之,jsp指令实现,共享request请求域,先包含再编译,不检查界面变化。只生成一个java文件。不允许有相同的变量。父界面和子界面的page指令不要有冲突。
用法的区别:
1)执行时间:
a.静态:<%@include file = "relativeURI%">是再翻译阶段执行;
b.动态:<jsp:include page = "relativeURI" flush = "true">请求处理阶段执行,运行阶段执行。
2)引入内容不同
a.静态:<%@include file = "relativeURI%">,在jsp页面被转化成servlet之前和它融合到一起;
b.动态:<jsp:include page = "relativeURI" flush = "true">引入执行界面或servelt 所生成的应答文本.