2

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

更多细节:我正在使用外部库开发一个servlet页面。该库很大程度上依赖于外部加载的 XML 文件(相对文件路径)。所以我需要把这些xml文件放到servlet的运行目录下。

Tomcat服务器中有没有一种方法可以相对访问文件?

4

3 回答 3

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)方法来获取 a URLFile可以像这样从中获取对象(包括替代方法):

File f;
try {
  f = new File(url.toURI());
} catch(URISyntaxException e) {
  f = new File(url.getPath());
}

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

于 2012-05-21T07:03:25.977 回答
0

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

于 2012-05-21T08:15:59.787 回答
-1

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

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

于 2018-03-05T16:44:54.060 回答