JSP中有两种包含:静态包含:% @ inclusive file=' included page ' %和动态包含:JSP : included page=' included page ' flush=' true '。下面是一个说明如何使用包含的例子。
示例:
项目文件树:
header.jsp文件的内容:
html头元http-equiv=' Content-Type ' Content=' text/html;Charset=gb18030 '标题在此插入标题/标题/标题正文h1这是contents文件中的标题//h1内容
表格边框=' 1 ' tr tdcol 1/TD tdcol 2/TD/tr tdcol 1/TD tdcol 2/TD/tr/table footer . JSP文件:
HR copyright : 1999-2010/body/html静态包含:
index.jsp文件的内容:
% @ page language=' Java ' import=' Java . util . * ' page coding=' GB 18030 ' % % @ include file='/header . JSP % % % @ include file='/content . JSP % % % @ include file='/footer . JSP ' %。
编译后的java文件:
动态包含
index.jsp文件的内容:
% @ page language=' Java ' import=' Java . util . * ' page encoding=' GB18030 ' % JSP : include page='/header . JSP '/JSP : include ejsp : include page='/content . JSP '/JSP : include JSP : include page='/footer . JSP '/JSP : include page显示结果:
编译后的java文件:
解释
在这个例子中,静态包含和动态包含具有相同的最终执行结果,但是实现过程不同,显然编译的java文件数量也不同。
静态和动态包含的区别和联系
注意:在下文中,包含其他文件的jsp文件将被称为主文件,例如上面提到的index.jsp文件。包含的文件称为包含文件,如上面的header.jsp文件。
“% @”inclusive file=“%”是一个指令元素。JSP : include page="/表示最终编译成java文件的行为元素数量不同。(从上面的例子可以看出)
静态包含在转换成java文件时,会将包含文件的内容“复制”到主文件中,然后作为一个整体进行编译。最后编译成一个java文件。
动态包含意味着每个jsp文件被分别转换和编译。最后被编程到多个java文件中。
不同的执行时间
静态包含发生在JSP - java文件阶段。
动态包含发生在执行类文档的阶段。动态添加。静态包含在两个文件中不能有相同的变量,允许动态包含。因为静态包含相当于将包含文件的内容直接复制到主文件中,如果出现相同的变量,就会出现覆盖等问题,导致文件错误。动态包含相当于调用不同的JSP,变量的空间不同,所以不会有覆盖。不管是动态的还是静态的,它的请求对象都是一样的。也就是同一个请求对象。静态包含最终被编译成一个java文件,请求对象很容易理解。虽然动态包含最终被编译成多个jsp文件,但为什么要使用一个请求对象呢?实际上,组合这些JSP的过程就是一个请求转发的过程,自然会使用同一个请求对象。
静态包含和动态包含的使用
简单总结一下,就一句话:如果包含的页面是静态的,就静态包含,如果是动态的,就动态包含。(当然不是绝对的,但也没什么不好。)
jsp静态包含与动态包含的区别与补充:
jsp中有两种包含:静态包含% @ includfile=' xxx.jsp ' %和动态包含jsp:include page='xxx.jsp '。下面我们来谈谈它们之间的区别
1.% @ includfile=' xxx.jsp ' %是jsp中的编译指令,其文件包含发生在jsp转换为servlet期间,而jsp:include page='xxx.jsp '是jsp中的动作指令,其文件包含发生在编译期间,即java文件编译成类文件时。
2.使用静态包含将只生成一个类文档,而使用动态包含将生成多个类文档
3.使用静态包含,被包含页面和被包含页面的请求对象是同一个对象,因为静态包含只将被包含页面的内容复制到被包含页面;但是,动态包含页和被包含页不是同一个页,被包含页的请求对象可以得到相对较大范围的参数,不仅可以得到传递给被包含页的参数,还可以得到传递给被包含页的参数