java - 如何访问java类中WEB-INF文件夹下的文件

标签 java jakarta-ee

我在 Web 应用程序中有一个纯 Java 类,想读取 WEB-INF 文件夹下的配置文件。如果文件在类路径中(WEB-INF/classes 文件夹),我知道访问该文件的方法。由于 WEB-INF/classes 文件夹是为 .class 文件准备的,我只想将我的配置文件保存在 WEB-INF 文件夹下。

谁能告诉我如何从我的 java 类访问它?

最佳答案

ServletContext.getResourceAsStream()将从相对于 WAR 文件根目录的给定路径加载文件。像这样的东西:

ServletContext ctx;
InputStream configStream = ctx.getResourceAsStream("/WEB-INF/config.properties");

这里的主要问题是您需要访问 servlet 上下文才能执行此操作。您在 servlet 或过滤器中有它,但在应用程序中的非 Web 组件中没有。您有几个选择:

  • 通过应用程序范围的变量、注入(inject)或其他方式,使 servlet 上下文从 Web 层到服务层可用
  • 将资源加载代码放在web层,暴露给服务层
  • 在web层加载配置,并传递给service层

关于java - 如何访问java类中WEB-INF文件夹下的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12883861/

相关文章:

jsp - java web app jsp - 事件目录和 tomcat SSO

jakarta-ee - response.SendRedirect ("Location"上的 java.lang.IllegalStateException )

java - Jms java se 客户端和 javax.naming.NoInitialContextException

java - 如何使用java存储从php文件检索的数据

java - 大型机 ZOS 机器的 MAC 地址

java - 检查java/js/jsp中某个ip的端口是否打开

java - 使用 jersey 2 和 cdi 的简单 Web 应用程序示例?

jakarta-ee - 如何从请求中放入自定义范围/上下文(JobScoped - 自定义 CDI 范围)特定实例以使其可注入(inject)?

java - 我的executeUpdate() 工作,但未提交

java - Spring 返回自定义 SOAP 故障