在Tomcat Servlet应用程序中放置文件的位置,以使它们相对于页面更加可见?
更多细节: 我正在开发一个servlet页面,同时使用一个外部库。该库在外部加载的XML文件上有很大的依赖(相对文件路径)。因此,我需要将这些XML文件放置在servlet的运行目录中。
Tomcat服务器中是否有一种方式可以相对地访问文件?
当一个Web应用程序被部署到Tomcat上时,Web应用程序的根目录就变成了$CATALINA_HOME/webapps/YOUR_WEB_APP/。
因此,如果使用一个servlet来访问位于Web应用程序根目录下路径中的XML文件,您可以直接使用以下内容:
request.getServletContext().getResourceAsStream("PATH/TO/YOUR/XML_FILE.xml")
这将把XML文件加载为InputStream
。当然,如果你想要访问文件本身,你可以使用getResource(String resource)
方法获取一个URL
,从中可以获取一个File
对象,如下所示(包括替代方法):
File f;
try {
f = new File(url.toURI());
} catch(URISyntaxException e) {
f = new File(url.getPath());
}
编辑:为了使它们相对于Web浏览器可见,只需将它们保留在./WEB-INF和./META-INF目录之外。
这是一个老问题。我正在使用Tomcat 9进行工作。我已经成功地将Tomcat安装目录作为基础。(CATALINA_HOME)例如,ROOT中文件的相对路径是“webapps/ROOT/someDir/fileName”
抱怨重复答案的地方是处理重复问题。
System.getProperty("user.dir")
来获取当前工作目录。打印它,你就知道在哪里放置你的文件了... - Moritz Petersen