我的webapp中有一个像这样的文件结构:
webapp/ ├── META-INF └── WEB-INF ├── reports │ └── info.txt └── web.xml 3 directories, 2 files
我需要/WEB-INF/reports/info.txt从这样的课程中获得:
/WEB-INF/reports/info.txt
this.getClass().getResource("/WEB-INF/reports/info.txt");
这会解决吗?我将对其进行测试,但不确定Tomcat的类加载器如何解决问题。如果这不起作用,如何获取文件?
好吧,首先,它this.getClass().getResource不应该工作(尽管我没有尝试)。它不是类路径,而是ServletContext,因此您需要使用ServletContext.getResource。
this.getClass().getResource
ServletContext.getResource
问题是,文件不是必需的:它可以是WAR存档中的条目。因此,根据您确切了解的内容,答案可能会有所不同。
我们使用一个Spring实用程序类来处理文件(通过ServletContext.getResourcePaths)(如果有)和WAR(通过ServletContext.getResource)。如果使用Spring,那可能是最好的方法。如果您不这样做,则可能需要重新实施该解决方案。
ServletContext.getResourcePaths
另外,您只需使用ServletContext.getResourceAsStream-不在乎资源的确切存储位置。因此,只要您需要它的内容而不是路径,就可以了。
ServletContext.getResourceAsStream