静态包含:<%@include file="被包含页面"%>
动态包含:<jsp:include page="被包含页面"flush="true">
区别:
静态包含,最后只生成一个字节码文件。
如: A.jsp 静态包含 B.jsp,C.jsp ,编译后只生成 A_jsp.class的字节码。
也就是说,静态包含在转换成为java文件的时候将包含文件的内容“复制”到主体文件,
然后作为一个整体编译。最终编译为一个java文件。如果出现相同的变量,就会出现覆盖等问题,导致文件出错。
动态包含:
动态包含是各个jsp文件分别转换,分别编译。最终编程成多个字节码文件,然后把结果包含。
如: A.jsp 静态包含 B.jsp,C.jsp ,编译后生成 A_jsp.class,B_jsp.class,B_jsp.class,然后B.jsp和C.jsp的结果包含给A.jsp。
动态包含相当于调用不同的jsp, 变量所在的空间不同,自然不会出现覆盖等现象。
注:不管是静态包含还是动态包含,其request对象是相同的,即同一个reqeust对象。