我有一堆文本,xml和其他文件(即资源),我需要在java web app中使用servlet访问。例如,有一个xml文件,其中一部分由用户查询返回servlet。我正在使用Tomcat。存储这些文件并从java代码访问它们的最佳实践是什么? 1)我应该在哪里放置默认文件夹,是否需要将它们放入Web存档或其中一个Jars中? 2)如何从java代码访问文件?如何设置它们的路径,以便它可以在任何环境中工作? 附:我已经阅读了许多与此主题相关的帖子,其中大部分都建议将资源存储在jar中并使用java.lang.Class.getResourceAsStream(String)访问它们。这看起来很奇怪,因为类和数据应该分开。
答案 0 :(得分:8)
使用类加载器加载静态资源非常好。这就是ResourceBundle用于加载国际化属性文件的功能。
将它们与您的类文件一起放在WEB-INF/classes
中,或放在WEB-INF/lib
内的jar中,然后使用ClassLoader加载它们,如您已阅读的答案所示。
这并不禁止您将这些文件放在与项目中的Java源文件不同的目录中。构建过程应该确保将它们放在运行时的适当位置。 Maven和Gradle约定是将源文件放在src/main/java
下,将资源文件放在src/main/resources
下。