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

New*_*bie 17 java java-ee

我在Web应用程序中有一个普通的java类,想要读取文件WEB-INF夹下的配置文件.我知道如果它在类路径(WEB-INF/classes文件夹)中访问该文件的方式.由于WEB-INF/classes文件夹用于.class文件,我想将配置文件保留在WEB-INF文件夹下.

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

Tom*_*son 18

ServletContext.getResourceAsStream()将从相对于WAR文件根目录的给定路径加载文件.就像是:

ServletContext ctx;
InputStream configStream = ctx.getResourceAsStream("/WEB-INF/config.properties");
Run Code Online (Sandbox Code Playgroud)

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

  • 通过应用程序范围的变量或注入或其他方式使servlet上下文从Web层到服务层
  • 将资源加载代码放在Web层中,并将其公开给服务层
  • 在Web图层中加载配置,并将其传递给服务图层

  • 从来没听说过。一个普通的 Java 类不知道它是 Web 应用程序的一部分,因此它无法访问任何 API 来执行特定于 Web 应用程序的事情! (2认同)

Abu*_*kar 2

getRealPath()您可以使用方法获取 servlet 的绝对路径ServletContext,然后附加WEB-INF到您获取的路径。我认为这是非常基本的,可能还有其他一些答案。

  • 我知道如何在“ServletContext”的帮助下做到这一点。但我正在寻找的是在一个普通的 java 类中执行此操作。 (2认同)