Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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

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 Servlet/Tomcat相对文件路径_Java_Jsp_Tomcat_Servlets - Fatal编程技术网

Java Servlet/Tomcat相对文件路径

Java Servlet/Tomcat相对文件路径,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,在Tomcat Servlet应用程序中放置文件的位置,以便它们对页面相对可见??? 更多详情: 我正在开发一个servlet页面,同时使用一个外部库。该库很大程度上依赖于外部加载的XML文件(相对文件路径)。因此,我需要将这些XML文件放在servlet的运行目录中 在Tomcat服务器中是否有一种方法可以相对地访问文件?当web应用程序部署到Tomcat时,web应用程序的根目录最终是$CATALINA\u HOME/webapps/YOUR\u web\u APP/ 因此,如果使用serv

在Tomcat Servlet应用程序中放置文件的位置,以便它们对页面相对可见???

更多详情: 我正在开发一个servlet页面,同时使用一个外部库。该库很大程度上依赖于外部加载的XML文件(相对文件路径)。因此,我需要将这些XML文件放在servlet的运行目录中


在Tomcat服务器中是否有一种方法可以相对地访问文件?
当web应用程序部署到Tomcat时,web应用程序的根目录最终是$CATALINA\u HOME/webapps/YOUR\u web\u APP/

因此,如果使用servlet访问位于web应用程序根目录内路径上的XML文件,则可以使用以下命令:

request.getServletContext().getResourceAsStream("PATH/TO/YOUR/XML_FILE.xml")
这将以
InputStream
的形式加载XML文件。当然,如果您想访问文件本身,您可以始终使用
getResource(String resource)
方法获取
URL
,从中可以像这样获取
文件
对象(包括替代方法):


编辑:要使它们对web浏览器相对可见,只需将它们放在./web-INF和./META-INF目录之外。

如果您所说的库要在类路径上搜索文件(如Hibernate或Log4J),您将不得不将XML文件放在web-INF中。但是,我建议您不要手动执行此操作。您可以将文件放在应用程序的源目录中,这将确保文件部署在正确的位置。

这是一个老问题。我正在研究Tomcat 9。我以Tomcat安装目录为基础非常成功。(CATALINA_HOME)例如,根目录中文件的相对路径是“webapps/ROOT/someDir/fileName”


抱怨重复回答的地方是处理重复的问题。

您可以使用
System.getProperty(“user.dir”)
获取当前工作目录。打印它,你就知道把文件放在哪里了……从那里,你可以访问整个文件结构。很好的评论Moritz.是的,我也有类似的想法,我已经写进了那个目录中的一个文件,但它原来是tomcat创建的一个临时目录…所以我想问是否有办法让tomcat将某些文件复制到这个目录中,如果能提到您正在谈论的库,可能会很有趣。我无法访问外部库的代码。。。我只知道它用相对路径加载文件..我想我当时很困惑。你想干什么?只是让外部库可以访问XML文件?如果是这样,则相对路径是应用程序根。此假设仅在默认Tomcat配置下有效。如果有人设置了一个显式的
docBase
(请参阅),webapp可能在任何地方。但我怀疑如果是这样的话,他会知道他设置了什么docBase。
File f;
try {
  f = new File(url.toURI());
} catch(URISyntaxException e) {
  f = new File(url.getPath());
}