ServletContext 接口读取配置文件要注意的路径问题

在建立一个maven项目时,我们通常把一些文件直接放在resource下面,在ServletContext中有getResource(String path)和getResourceAsStream(String path)这两个方法,可以

利用这两个方法读取配置文件的内容:

配置文件在项目的位置如下图所示:

这里一定要注意读取配置文件应该以类路径,如resource目录下的db.properties文件,他的类路径是/WEB-INF/classes/db.properties(在target 目录下,我已经用红圈圈住了)

所以:读取这个配置文件的的代码如下:this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");

下面引用servlet规范中的文字说明理由;

The getResource and getResourceAsStream methods take a String with a leading
“/” as an argument that gives the path of the resource relative to the root of the
context or relative to the META-INF/resources directory of a JAR file inside the
web application’s WEB-INF/lib directory. These methods will first search the root
of the web application context for the requested resource before looking at any of the
JAR files in the WEB-INF/lib directory. The order in which the JAR files in the
WEB-INF/lib directory are scanned is undefined. This hierarchy of documents may
exist in the server’s file system, in a Web application archive file, on a remote server,
or at some other location.

原文地址:https://www.cnblogs.com/1540340840qls/p/7709062.html