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

2022-09-02 10:08:04

我在Web应用程序中有一个普通的java类,并且想要读取文件夹下的配置文件。我知道访问文件的方法,如果它在类路径(文件夹)中)。由于文件夹用于文件,因此我想仅将配置文件保留在文件夹下。WEB-INFWEB-INF/classesWEB-INF/classes.classWEB-INF

任何人都可以告诉我如何从我的java类访问它吗?


答案 1

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

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

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

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

答案 2

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


推荐