将文件放在Tomcat Servlet应用程序中的位置,以便它们对页面相对可见?Servlet/Tomcat相对文件路径
更多细节: 我同时使用外部库开发的servlet页。该库大量依赖外部加载的XML文件(相对文件路径)。所以我需要将这些XML文件放在servlet的运行目录的中。
Tomcat服务器中有没有办法可以访问文件相对?
将文件放在Tomcat Servlet应用程序中的位置,以便它们对页面相对可见?Servlet/Tomcat相对文件路径
更多细节: 我同时使用外部库开发的servlet页。该库大量依赖外部加载的XML文件(相对文件路径)。所以我需要将这些XML文件放在servlet的运行目录的中。
Tomcat服务器中有没有办法可以访问文件相对?
当Web应用程序部署到Tomcat,所述web应用程序的根最终被$ CATALINA_HOME/web应用/ YOUR_WEB_APP/
这样,如果使用servlet访问位于内的路径上的XML文件Web应用程序的根目录,你可以使用以下命令:
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”
抱怨重复答案的地方是处理重复的问题。
您可以使用'System.getProperty(“user.dir”)'获取当前工作目录。打印它,你知道在哪里把你的文件... –
从那里,你可以访问整个文件结构。好的评论莫里茨。 – Ewald
是的,我已经完成了simillar的想法,我已经写入该目录中的文件,但它原来是一个临时目录,tomcat创建... – Betamoo