1.<%@ include file=” ”%>是指令元素。<jsp:include page=” ”/>是行为元素
2.最终编译成java文件的数目不同。(从上面的例子可以看出)
1.静态包含在转换成为java文件的时候将包含文件的内容“复制”到主体文件,然后作为一个整体编译。最终编译为一个java文件。
2.动态包含是各个jsp文件分别转换,分别编译。最终编程成多个java文件。
3.执行时间不同
静态包含发生在:JSP---->java文件阶段。
动态包含发生在:执行class文件阶段。动态加入。
4.静态包含在两个文件中不能有相同的变量,动态包含允许。
由于静态包含相当于将包含文件内容直接复制到主体文件中,如果出现相同的变量,就会出现覆盖等问题,导致文件出错。而动态包含相当于调用不同的jsp,变量所在的空间不同,自然不会出现覆盖等现象。
5.无论是动态包含还是静态包含,其request对象都是相同的。也就是同一个request对象。
6.不同之处
(1)两者格式不同,静态包含:<%@ include file=“文件” %>,而动态包含:。
(2)包含时间不同,静态包含是先将几个文件合并,然后再被编译,缺点就是如果含有相同的标签,会出错。动态包含是页面被请求时编译,将结果放在一个页面。
(3)生成的文件不同,静态包含会生成一个包含页面名字的servlet和class文件;而动态包含会各自生成对应的servlet和class文件
(4)传递参数不同,动态包含能够传递参数,而静态包含不能 。
7.静态不会随着时间,地点,用户操作而改变,但动态会。