如何为request.getRequestDispatcher()指定.JSP文件的路径?

我对request.getContextPath()的含义感到困惑。 我的文件布局如下:

MyServer/WebContent: /Resources/MyImage.jpg /Resources/Scripts/MyScript.js /WEB-INF/JSP/MyPage.jsp 

MyPage.jsp我能够找到JavaScript和图像

  

  

由此我得出结论, ${pageContext.request.contextPath}动态解析为“WebContent”文件夹,我理解这将解析为此文件夹,无论它的名称是什么。 那很有效。

但是,从所有这一点我得出结论,在我的.java代码中, request.getContextPath()也会动态地解析为“WebContent”。 但是当我尝试使用request.getContextPath()+"/WEB-INF/JSP/MyPage.jsp"形成的字符串从.java代码转发到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路径下载它们的webbrowser。 常见的启动者错误是他们认为是网络服务器必须以某种方式通过本地磁盘文件系统路径自动包含它们。 因此不是这样。 它实际上是一个URL,就像您在浏览器的地址栏中输入的那样。

也可以看看:

  • 在调用转发到JSP的Servlet时,浏览器无法访问/查找CSS,图像和链接等相关资源