Servlet / Tomcat相对文件路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet / Tomcat相对文件路径相关的知识,希望对你有一定的参考价值。

将文件放在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目录之外。

另一答案

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

另一答案

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

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

以上是关于Servlet / Tomcat相对文件路径的主要内容,如果未能解决你的问题,请参考以下文章

servlet文件路径问题

Servilet初步

springboot报错说 Failed to parse multipart servlet request; nested exception is java.io.IOException(代码片

Springboot项目创建文件中相对路径问题

Servlet路径跳转问题

JavaLearn#(23)JSP相关语法HTTP协议Servlet介绍Servlet生命周期请求和响应相对路径转发和重定向