在Web应用中都称作包含,<%@include%>为静态包含,<jsp:include/>为动态包含。
那么究竟什么是静态包含什么是动态包含?
简单的理解是:
使用<%@include%>(静态包含),将被导入的页面的代码完全融入,两个页面融合成一个整体Servlet提交给Tomcat编译,在MyEclipse中使用静态包含时可能出现:
- Duplicate local variable path
- Duplicate local variable
的错误,其实是使用<%@include%>时会自动引进如下代码:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>">
这里用到的变量basePath 与MyEclipse默认生成的代码来指定路径重复,所以在使用<%@include%>时需要对默认生成的代码的变量名进行修改。
使用<jsp:include/>(动态包含),是在Servlet中使用include方法来引入被导入页面的内容,Servlet容器会先编译被导入内容再将结果包含到原页面中一起编译。另外值得一提的是动态包含可以增加额外的参数,通过request和reponse进行通信。
部分内容参考:http://blog.csdn.net/yangbobo1992/article/details/8085667