Servlet / Tomcat相对文件路径

时间:2012-05-21 06:50:11

标签: java jsp tomcat servlets

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

更多细节: 我正在使用外部库开发 servlet 页面。该库大量依赖于外部加载的XML文件(相对文件路径)。所以我需要将这些XML文件放在servlet的运行目录中。

在Tomcat服务器中是否有办法可以访问文件相对

3 个答案:

答案 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”

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