1) 语法不同
静态包含语法: <%@inclue file="被包含的页面"%>
动态包含语法: <jsp:include page="被包含的页面">
2)参数传递不同
静态包含不能向被包含页面传递参数
动态包含可以使用jsp:param标签向被包含页面传递参数
3)原理不同
静态包含: 先合并再翻译
动态包含: 先翻译再合并
1.静态包含是在转换之前把包含的文件合在一起,然后再编译,从而只生成一个java文件和一个class文件。
2.因为在编译之前合在一起的,所以在file中传递参数是没有意义的。
3.包含页面和被包含页面访问的是同一个request对象,因为是同一个servlet,同在_jspService()方法中。
4.两个页面必须使用相同的编码。
1.动态包含,当执行到被包含页面时,才转换,所以产生两个java和class文件。
2.两个文件的request对象不是同一个,但被包含页面可以取得包含页面的参数。
3.从而动态包含可以传参数。
4.也可以通过标签传递参数,类似于page中传参,如下:
<jsp:include page="..."flush=true>
<jsp:param name="..." value="..."/>
</jsp:include>