我对 request.getContextPath() 的含义感到困惑。我的文件布局如下:
MyServer/WebContent:
/Resources/MyImage.jpg
/Resources/Scripts/MyScript.js
/WEB-INF/JSP/MyPage.jsp
在MyPage.jsp
我能够通过以下方式找到 JavaScript 和图像
<script src="${pageContext.request.contextPath}/Resources/Scripts/MyScript.js">
和
<img src="${pageContext.request.contextPath}/Resources/MyImage.img">
由此我得出结论,${pageContext.request.contextPath}
动态解析到“WebContent”文件夹,据我了解,无论它的名称是什么,这都会解析到这个文件夹。那是有效的。
但是,从所有这些中我得出结论,回到我的 .java 代码request.getContextPath()
中也会动态解析为“WebContent”。但是当我尝试从 .java 代码转发到MyPage.jsp
使用由 形成的字符串时request.getContextPath()+"/WEB-INF/JSP/MyPage.jsp"
,找不到 JSP;这会导致 404 错误 - “请求的资源 (/MyServer/WEB-INF/JSP/MyPage.jsp) 不可用”。如果我打电话"/WEB-INF/JSP/MyPage.jsp"
,我们将启动 JSP 页面。有人可以解释为什么预先挂起request.getContextPath()
会导致失败,还有什么我应该使用的东西来确保 .JSP 的路径总是得到解决吗?