include file(变量) 动态加载文件
<%@include file="/includes/<%=id %>/abc.html" %> 这样写系统会报错,提示找不到文件,主要原因是<%=id %>并没有被解析为你想要的id。
好,我们换一种方式,使用<jsp:include page="/includes/<%=id %>/adc.html"></jsp:include>是不是可以呢。在Eclipse中<%=id %>显示的颜色告诉我们这样应该可以。不过,不好意思,这样还真的不行。
那我们再换个思路,我们把整个page后面的值当成一个变量,写成这样:
<%String add = "/includes/" + id+ "/abc.html"; %>
<jsp:include page="<%=add %>"></jsp:include>
经过测试这样是可行的。反过来你可能会想到
<%String add = "/includes/" + id+ "/abc.html"; %>
<%@include file="<%=add %>" %>
些是不是也可以呢,经测试,这样还是不行。
下面转自:http://hi.baidu.com/hankers/blog/item/dc1bda54489c215dd0090674.html
<%@ include file="" %>
静态包含文件,即在编译时插入包含的文件。file不能为一变量URL,也不可以在file 所指定的文件后接任何参数,file 所指的路径必须是相对于此JSP 网页的路径。
如果在includebydirectives.jsp中使用<%@ include file="common.jsp"%>,则会在生成的includebydirectives_jsp.java中将common.jsp的文件包含进来。
注:在common.jsp、includebydirectives.jsp可相互引用定义的变量、方法。在common.jsp中定义的指令会合并到includebydirectives.jsp中。
<jsp:include page="" />
动态包含文件,即在运行时加入包含文件的运行结果。语法:
<jsp:include page="{urlSpec | <%= expression %>}" flush="true | false " />
或
<jsp:include page="{urlSpec | <%= expression %>}" flush="true | false" >
<jsp:param name="PN" value="{PV | <%= expression %>}" /> *
</jsp:include>
如果在includebyaction.jsp中使用<jsp:include flush="true" page="common.jsp"></jsp:include>,则在生成的includebyaction_jsp.java中在include的地方会加入一条:
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "common.jsp", out, true);
注:includebyaction.jsp和common.jsp是相互独立的,includebyaction.jsp只是把common.jsp执行的结果加入。
更详细的信息请参考:http://hi.baidu.com/%D2%BB%C9%FA%CF%B7/blog/item/694657f378c5305c352accf2.html