Al *_*och 2 java jsp servlets requestdispatcher
我对 request.getContextPath() 的含义感到困惑。我的文件布局如下:
MyServer/WebContent:
/Resources/MyImage.jpg
/Resources/Scripts/MyScript.js
/WEB-INF/JSP/MyPage.jsp
Run Code Online (Sandbox Code Playgroud)
在MyPage.jsp我能够通过以下方式找到JavaScript和图像
MyServer/WebContent:
/Resources/MyImage.jpg
/Resources/Scripts/MyScript.js
/WEB-INF/JSP/MyPage.jsp
Run Code Online (Sandbox Code Playgroud)
和
<script src="${pageContext.request.contextPath}/Resources/Scripts/MyScript.js">
Run Code Online (Sandbox Code Playgroud)
由此我得出的结论是,${pageContext.request.contextPath}动态解析为“WebContent”文件夹,并且我的理解是,无论它的名称是什么,这都将解析为该文件夹。那是有效的。
然而,从所有这些我得出的结论是,回到我的 .java 代码中request.getContextPath()也会动态解析为“WebContent”。但是当我尝试从 .java 代码转发到MyPage.jsp使用 .java 代码形成的字符串时request.getContextPath()+"/WEB-INF/JSP/MyPage.jsp",无法找到 JSP;这会导致 404 错误 - “请求的资源 (/MyServer/WEB-INF/JSP/MyPage.jsp) 不可用”。如果我调用,"/WEB-INF/JSP/MyPage.jsp"我们就会启动 JSP 页面。有人可以解释为什么预挂起request.getContextPath()会导致此失败吗?我是否应该使用其他方法来确保 .JSP 的路径始终得到解析?
该RequestDispatcher操作已经与当前 Web 应用程序上下文相关。您不需要预先考虑上下文路径。
为什么在 HTML 中链接的 JS/CSS/image/etc 资源需要它,很简单,因为网络浏览器必须通过正确的 URL 路径下载它们。一个常见的初学者错误是他们认为网络服务器必须以某种方式通过本地磁盘文件系统路径自动包含它们。因此,这是不正确的。它实际上必须是一个 URL,就像您在浏览器地址栏中输入的 URL 一样。
| 归档时间: |
|
| 查看次数: |
8842 次 |
| 最近记录: |