包含页面 include 两种方式的区别
动态加载页面
<jsp:include page="/home/common/top.jsp" flush="true"/>
以这种方式包含页面是在显示的时候动态加载top页面。
在容器的work目录下可以找到编译后的对应Java文件。里面的内容为
<%@ include file="/home/common/top.jsp"%>
以这种方式包含页面是在编译的时候变异成一个Java文件。
在容器的work目录下可以找到编译后的对应Java文件。里面的内容为
<% String name="Michael"; %>
可以在主页面里面直接使用<%=name%> 可以直接输出 Michael
但是使用动态加载的时候 如果使用<%=name%>会直接报告编译错误。
动态页面和静态页面各有个的好处,动态加载不用担心命名重复的问题,静态加载可以直接读取被包含页的值。 所以适当的时候使用不同的加载方式,看个人的需求自己定夺。
动态加载页面
<jsp:include page="/home/common/top.jsp" flush="true"/>
以这种方式包含页面是在显示的时候动态加载top页面。
在容器的work目录下可以找到编译后的对应Java文件。里面的内容为
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "/home/common/top.jsp", out, true);
静态加载页面
<%@ include file="/home/common/top.jsp"%>
以这种方式包含页面是在编译的时候变异成一个Java文件。
在容器的work目录下可以找到编译后的对应Java文件。里面的内容为
out.write("\r\n");
out.write("<table class=\"headTableContainer\" cellpadding=\"0\" cellspacing=\"0\">\r\n");
out.write("\t<tr height=\"40\">\r\n");
out.write("\t\t<td class=\"logoCell\">\r\n");
out.write("\t\t</td>\r\n");
out.write("\t\t<td class=\"userToolCell\" align=\"right\" valign=\"bottom\">\r\n");
out.write("\t\t\t<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"headerTable\">\r\n");
out.write("\t\t\t\t<tr>\r\n");//............................top页面的代码
所以,使用静态加载的时候,可以使用被包含页面中<%%>代码中的变量。例如
<% String name="Michael"; %>
可以在主页面里面直接使用<%=name%> 可以直接输出 Michael
但是使用动态加载的时候 如果使用<%=name%>会直接报告编译错误。
动态页面和静态页面各有个的好处,动态加载不用担心命名重复的问题,静态加载可以直接读取被包含页的值。 所以适当的时候使用不同的加载方式,看个人的需求自己定夺。