Mat*_* Mc 2 java jsp servlets path jspinclude
我正在我的基于 JSP 的 web 应用程序中做一些基本的模板。例如,我想要将标准页眉和页脚(基本 HTML)拉入我的每个 JSP 中。
我的内容 JSP 位于/WEB-INF/jsp/home.jsp,并且我的模板 JSP 位于/WEB-INF/jsp/template/,例如/WEB-INF/jsp/template/Body-Footer.jsp.
所以现在,在 内home.jsp,我想拉入我的模板文件。首先,我尝试以下jsp:include操作:
<jsp:include page="template/Body-Footer.jsp"></jsp:include>
Run Code Online (Sandbox Code Playgroud)
它产生错误 javax.servlet.ServletException: File "/template/Body-Footer.jsp" not found
对我来说很奇怪,考虑到 Eclipse 说路径是有效的。
好的,那么我切换到包含指令:
<%@ include file="template/Body-Footer.jsp" %>
Run Code Online (Sandbox Code Playgroud)
这工作得很好,拉入我的页脚 HTML。
但为什么不起作用jsp:include?经过一些实验,我发现放入绝对路径确实可以让它工作:
<jsp:include page="/WEB-INF/jsp/template/Body-Footer.jsp"></jsp:include>
Run Code Online (Sandbox Code Playgroud)
现在它工作正常,没有错误。
所以这是我的问题:为什么?为什么我(显然)需要在操作中使用绝对路径jsp:include,而不是在 include 指令中使用?
/WEB-INF/jsp/template/Body-Footer.jsp不是绝对路径。它也是一个相对路径。问题是这template/Body-Footer.jsp是一个不完整的相对路径,而另一个是完整的。也就是说,路径是相对于您的应用程序路径的。由于/WEB-INF/在您的应用程序路径下,您必须包含它。绝对路径意味着像C:/program files/tomcat/webapps/yourapp/WEB-INF/jsp/template/Body-Footer.jsp
| 归档时间: |
|
| 查看次数: |
11939 次 |
| 最近记录: |