Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为request.getRequestDispatcher()指定.JSP文件的路径?_Java_Jsp_Servlets_Requestdispatcher - Fatal编程技术网

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

Java 如何为request.getRequestDispatcher()指定.JSP文件的路径?,java,jsp,servlets,requestdispatcher,Java,Jsp,Servlets,Requestdispatcher,我对request.getContextPath()的含义感到困惑。我的文件布局如下: MyServer/WebContent: /Resources/MyImage.jpg /Resources/Scripts/MyScript.js /WEB-INF/JSP/MyPage.jsp 在MyPage.jsp中,我可以通过 及 由此我得出结论,${pageContext.request.contextPath}动态解析为“WebContent”文件夹,据我所知,无

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

MyServer/WebContent:
    /Resources/MyImage.jpg
    /Resources/Scripts/MyScript.js
    /WEB-INF/JSP/MyPage.jsp
MyPage.jsp
中,我可以通过



由此我得出结论,
${pageContext.request.contextPath}
动态解析为“WebContent”文件夹,据我所知,无论该文件夹的名称如何,它都将解析为该文件夹。这是有效的


然而,从所有这些我得出结论,回到我的.java代码
请求中,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资源之所以需要它,仅仅是因为Web浏览器必须通过正确的URL路径下载它们。一个常见的开始错误是,他们认为是Web服务器以某种方式通过本地磁盘文件系统路径自动包含它们。因此,情况并非如此。它必须是一个URL,就像您在浏览器地址栏中输入的URL一样

另见:

RequestDispatcher已相对于当前web应用程序上下文运行。您不需要预先设置上下文路径

用HTML链接的JS/CSS/image/etc资源之所以需要它,仅仅是因为Web浏览器必须通过正确的URL路径下载它们。一个常见的开始错误是,他们认为是Web服务器以某种方式通过本地磁盘文件系统路径自动包含它们。因此,情况并非如此。它必须是一个URL,就像您在浏览器地址栏中输入的URL一样

另见:

谢谢您的回复。如果我不应该引用上下文路径,我应该使用什么?我是否可以保证“/WEB-INF/JSP/MyPage.JSP”将始终得到解决,无论战争如何部署?如果没有,我应该使用什么来确保可移植性?再次感谢?如上所述,
RequestDispatcher
已经相对于当前web应用程序上下文运行。如果没有,这将是一个安全漏洞,因为您可以将它发送到一个完全不同的webapplication(甚至不是您的webapplication),它恰好运行在同一台服务器上。您不必担心这里的上下文路径。只需指定与webcontent相关的路径,如so
/WEB-INF/some.jsp
。感谢您的回复。如果我不应该引用上下文路径,我应该使用什么?我是否可以保证“/WEB-INF/JSP/MyPage.JSP”将始终得到解决,无论战争如何部署?如果没有,我应该使用什么来确保可移植性?再次感谢?如上所述,
RequestDispatcher
已经相对于当前web应用程序上下文运行。如果没有,这将是一个安全漏洞,因为您可以将它发送到一个完全不同的webapplication(甚至不是您的webapplication),它恰好运行在同一台服务器上。您不必担心这里的上下文路径。只需指定一个相对于webcontent的路径,如so
/WEB-INF/some.jsp