将文件放在 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)
方法来获取 a URL
,File
可以像这样从中获取对象(包括替代方法):
File f;
try {
f = new File(url.toURI());
} catch(URISyntaxException e) {
f = new File(url.getPath());
}
编辑:要使它们对网络浏览器相对可见,只需将它们放在 ./WEB-INF 和 ./META-INF 目录之外。
如果您正在谈论的这个库要在类路径中搜索文件(如 Hibernate 或 Log4J 会这样做),您将不得不将您的 XML 文件放在 WEB-INF 中。但是,我建议您不要手动执行此操作。您可以将文件放在应用程序的源目录中,这将确保文件部署在正确的位置。
这是一个老问题。我正在开发 Tomcat 9。我以 Tomcat 安装目录为基础非常成功。(CATALINA_HOME) 例如,ROOT 中文件的相对路径是“webapps/ROOT/someDir/fileName”
抱怨重复答案的地方是处理重复的问题。