将文件放在Tomcat Servlet应用程序中的位置,以使它们对页面相对可见?
更多细节: 我正在使用外部库开发 servlet 页面。该库大量依赖于外部加载的XML文件(相对文件路径)。所以我需要将这些XML文件放在servlet的运行目录中。
在Tomcat服务器中是否有办法可以访问文件相对?
答案 0 :(得分:2)
将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目录中删除即可。
答案 1 :(得分:0)
如果您正在讨论的这个库将要在类路径上搜索文件(如Hibernate或Log4J那样),则必须将您的XML文件放在WEB-INF中。但是,我建议你不要手动执行此操作。您可以将该文件放在应用程序的源目录中,这将确保文件部署在正确的位置。
答案 2 :(得分:-1)
这是一个老问题。我正在使用Tomcat 9.我以Tomcat安装目录为基础已经非常成功。 (CATALINA_HOME)例如ROOT中文件的相对路径是“webapps / ROOT / someDir / fileName”
抱怨重复答案的地方是处理重复的问题。