在Java Web应用程序中存储和访问资源文件的最佳实践

Ale*_*der 7 servlets web-applications file war

我有一堆文本,xml和其他文件(即资源),我需要使用java web app中的servlet访问.例如,有一个xml文件,其中一部分由用户查询返回servlet.我正在使用Tomcat.存储这些文件并从java代码访问它们的最佳实践是什么?1)我应该在哪里放置默认文件夹,是否需要将它们放入Web存档或其中一个Jars中?2)如何从java代码访问文件?如何设置它们的路径,以便它可以在任何环境中工作?PS我已经阅读了许多与此主题相关的帖子,其中大多数都建议将资源存储在jar中并使用java.lang.Class.getResourceAsStream(String)访问它们.这看起来很奇怪,因为类和数据应该分开.

JB *_*zet 8

使用类加载器加载静态资源非常好.这就是ResourceBundle为加载国际化属性文件所做的事情.

将它们WEB-INF/classes与您的类文件一起放入,或放在jar内部WEB-INF/lib,然后使用ClassLoader加载它们,如您已阅读的答案所示.

这并不禁止您将这些文件放在与项目中的Java源文件不同的目录中.构建过程应该确保将它们放在运行时的适当位置.Maven和Gradle约定是将源文件放在下面src/main/java,将资源文件放在下面src/main/resources.

  • WEB-INF中的资源无法从外部访问,因此无法从浏览器加载WEB-INF中的JS文件.您可以使用ServletContext.getResourceAsStream()从webapp中的任何位置加载资源(包括WEB-INF),但这会强制加载类访问ServletContext.我不明白你的第二个问题.这是一个静态资源.你为什么不在一些常数中对路径进行硬编码? (2认同)