一尘不染

从getResource解析Webapp的根

tomcat

我的webapp中有一个像这样的文件结构:

webapp/
├── META-INF
└── WEB-INF
    ├── reports
    │   └── info.txt
    └── web.xml

3 directories, 2 files

我需要/WEB-INF/reports/info.txt从这样的课程中获得:

this.getClass().getResource("/WEB-INF/reports/info.txt");

这会解决吗?我将对其进行测试,但不确定Tomcat的类加载器如何解决问题。如果这不起作用,如何获取文件?


阅读 238

收藏
2020-06-16

共1个答案

一尘不染

好吧,首先,它this.getClass().getResource不应该工作(尽管我没有尝试)。它不是类路径,而是ServletContext,因此您需要使用ServletContext.getResource

问题是,文件不是必需的:它可以是WAR存档中的条目。因此,根据您确切了解的内容,答案可能会有所不同。

我们使用一个Spring实用程序类来处理文件(通过ServletContext.getResourcePaths)(如果有)和WAR(通过ServletContext.getResource)。如果使用Spring,那可能是最好的方法。如果您不这样做,则可能需要重新实施该解决方案。

另外,您只需使用ServletContext.getResourceAsStream-不在乎资源的确切存储位置。因此,只要您需要它的内容而不是路径,就可以了。

2020-06-16