我对request.getContextPath()的含义感到困惑。我的文件布局如下:
MyServer/WebContent: /Resources/MyImage.jpg /Resources/Scripts/MyScript.js /WEB-INF/JSP/MyPage.jsp
在中,MyPage.jsp我可以通过以下方式找到JavaScript和图像
MyPage.jsp
<script src="${pageContext.request.contextPath}/Resources/Scripts/MyScript.js">
和
<img src="${pageContext.request.contextPath}/Resources/MyImage.img">
据此,我得出结论,它${pageContext.request.contextPath}动态地解析为“ WebContent”文件夹,并且据我所知,无论该文件夹如何命名,都将解析为该文件夹。可以了
${pageContext.request.contextPath}
但是,从所有这些我得出的结论是,回到我的.java代码中request.getContextPath(),还将动态地解析为“ WebContent”。但是,当我尝试从.java代码转发到MyPage.jsp使用from形成的字符串时request.getContextPath()+"/WEB- INF/JSP/MyPage.jsp",找不到JSP;这将导致404错误-“请求的资源(/MyServer/WEB- INF/JSP/MyPage.jsp)不可用”。如果我打电话,"/WEB- INF/JSP/MyPage.jsp"我们将启动JSP页面。有人可以解释为什么挂起request.getContextPath()会导致此操作失败,还有什么我应该使用以确保始终解析到.JSP的路径吗?
request.getContextPath()
request.getContextPath()+"/WEB- INF/JSP/MyPage.jsp"
"/WEB- INF/JSP/MyPage.jsp"
该RequestDispatcher操作已经相对于当前Web应用程序上下文进行了操作。您无需在上下文路径前添加前缀。
RequestDispatcher
为什么以HTML链接的JS / CSS / image / etc资源需要它,仅是因为Web浏览器必须通过正确的URL路径下载它们。一个常见的入门错误是,他们认为是Web服务器必须以某种方式自动将它们包含在本地磁盘文件系统路径中。因此,这是不正确的。它实际上必须是一个URL,就像您在浏览器的地址栏中输入的URL一样。