动态包含是用<jsp:include page="pageName" />;动态包含是先将被包含的jsp页面进行转换处理执行,再把处理结果进行包含,也就是说Web容器会在遇到动态包含指令时,先对这个page属性所指定的jsp进行Serlvet转换处理与执行,然后再把处理结果包含到动态指令处的位置上,而不是包含jsp文件中的实际内容。如果动态包含的page属性所指定的不是一个jsp文件,那么,其处理方式与静态包含<%@include file="fileName"%>相同。
动态包含可以从当前页面向被包含的jsp页面传递参数或变量,然后在被包含页面中通过request.getParameter("paraName")的方式获取,如:<%! public static String str="variable"%><jsp:include page="included.jsp"> <jsp:param name="paraName" value="anyValue" /> <jsp:param name="var" value="<%=str%>" /></jsp:include>
====================================================
从以下代码的显示效果来看,request对象确实不是一个,而是进行了传递:
====包含另一个页面的jsp==================================
<%@page contentType="text/html;charset=gbk"%>
包含前的request对象--->: <%=request%><br>
<jsp:include page="included.jsp"/><br>
包含后的request对象--->: <%=request%><br>
被包含JSP页面中的request对象--->: <%=request.getAttribute("request2")%>
==========================================================
被包含的JSP==============================================
<%@page contentType="text/html;charset=gbk"%><% request.setAttribute("request2",request);%>
被包含的JSP页面中的request对象--->: <%=request%><br>
========================================================
测试了下,在a.jsp中包含b.jsp
结果如下: