我有一堆文本,xml和其他文件(即资源),我需要在java web应用程序中使用servlet访问。例如,有一个xml文件,其中一部分由用户查询返回servlet。我正在使用Tomcat。存储这些文件并从java代码访问它们的最佳实践是什么?1)我应该把它们放在什么默认文件夹中,我需要把它们放在Web归档文件中还是放到一个jar文件中?2)如何从java代码访问文件?我如何设置它们的路径,使其在任何环境中都能工作?P.S.我读过许多与这个主题相关的文章,其中大多数建议将资源存储在jar中,并使用java.lang.Class.getResourceAsStream(String)访问它们。这看起来很奇怪,因为类和数据应该是分开的。
使用类加载器加载静态资源是完全可以的。例如,这就是ResourceBundle加载国际化属性文件所做的。
把它们和你的类文件一起放在WEB-INF/classes
中,或者放在WEB-INF/lib
中的一个jar中,然后用ClassLoader加载它们,正如你已经读过的答案所指示的。
这并不禁止您将这些文件与项目中的Java源文件放在一个单独的目录中。构建过程应该确保将它们放在运行时的适当位置。Maven和Gradle的惯例是将源文件放在src/main/java
下,将资源文件放在src/main/resources
下。