8

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

4

1 回答 1

10

使用类加载器加载静态资源非常好。例如,这就是 ResourceBundle 加载国际化属性文件的方式。

将它们WEB-INF/classes与您的类文件一起放入,或放入 jar 中WEB-INF/lib,并使用 ClassLoader 加载它们,如您已阅读的答案所示。

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

于 2012-12-22T20:35:27.597 回答