在了解动态包含之前,我们先看看静态包含的源码:
首先,我们要将该窗口中的几个文件拷贝到tomcat文件下的web文件里头:
然后,我们启动tomcat的服务:
因为我们不是在idea中打开,所以我们要在文件名(IncExample.jsp)和根目录(/)中间加上拷贝文件的存放文件夹(web):
我们在客户daunt访问IncExample.jsp文件之后,便会在tomcat文件的catlina的文件夹中出现对应的字节码文件和java文件,
我们点开可以查看:
我们可以看到,在该页面源文件中,IncExample.java包含了head、main和footer(在窗口边缘外)的页面代码,
这就是静态包含:
同理,在修改代码之后再按照上述步骤,来打开动态包含的页面源代码:
<html>
<head>
<title>Title</title>
</head>
<body>
<%--<%@include file="header.jsp" %>--%>
<%--<%@include file="main.jsp" %>--%>
<%--<%@include file="footer.jsp" %>--%>
<jsp:include page="header.jsp"/>
<jsp:include page="main.jsp">
<jsp:include page="footer.jsp"/>
</body>
</html>
我们看到不同之处在于,动态包含中,是可以传参数的。另外,动态包含的输出机制,大致与请求派发中的包含是一样的。即两个servlet都可以输出,且形成包含效果。
这里我们可以灵活运用两种包含机制——需要传参时,动态包含最快;不需要时,静态包含最快。
现在,我们要用动态包含的方法给页面传参数:
包含页面
<html>
<head>
<title>Title</title>
</head>
<body>
<%--<%@include file="header.jsp" %>--%>
<%--<%@include file="main.jsp" %>--%>
<%--<%@include file="footer.jsp" %>--%>
<jsp:include page="header.jsp"/>
<jsp:include page="main.jsp">
<%--param的作用:查询字符串参数--%>
<%--这里一个页面包含的时候,还可以给另外一个页面传参数。--%>
<jsp:param name="key" value="11111"/>
<jsp:param name="value" value="3424"/>
</jsp:include>
<jsp:include page="footer.jsp"/>
</body>
</html>
被包含的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Main
<%=request.getParameter("key")%>
<%=request.getParameter("value")%>
</body>
</html>