Servlet加载Properties

Servlet中加载配置文件的方式(使用Properties)

这里我只测试了加载Properties的路径问题(且前提是配置文件是放在resources目录下的),其他类型的配置文件不展开赘述

方法1:使用类的加载器

在java中我们常用的加载Properties文件的方法为:使用当前类的加载器,获取资源流之后再new 一个Properties对象进行加载,所以在Servlet中我们也可以使用这样的方法进行加载配置文件。具体的在Servlet中的代码如下:

// 使用类的加载器获取资源文件,相对路径如下所示
ClassLoader loader = 当前类名.class.getClassLoader();
// 获取资源流
InputStream is = loader.getResourceAsStream("db.properties");
Properties pros = new Properties();
// 加载资源流
pros.load(is);

项目的文件目录结构如下,Maven是对规范要求较高,不按要求可能会出现一些问题
Servlet加载Properties_第1张图片

这种方式是可以进行加载resources目录下的配置文件的,又例如,想加载resources目录下的test目录下的db.properties的话,路径仅需要替换为如下所示:

// 使用类的加载器获取资源文件,相对路径如下所示
ClassLoader loader = 当前类名.class.getClassLoader();
// 获取资源流
InputStream is = loader.getResourceAsStream("test/db.properties");
Properties pros = new Properties();
// 加载资源流
pros.load(is);

值得注意的是test目录前没有 /

方法2:使用ServletContext上下文

在Servlet中,可以通过 this.getServletContext() 方法来获得一个当前项目的上下文,这个上下文可以用于多个Servlet类之间的数据共享等操作,也可以通过 context.getResourceAsStream() 方法以流的形式加载配置文件,一个完整的Maven项目通过编译自动生成的 target目录结构 如下:
Servlet加载Properties_第2张图片
这个servlet-02-1.0-SNAPSHOT目录就是当前项目所在的目录,可以看到我们需要加载的配置文件是在 /WEB-INF/classes/db.properties这个位置的,所以具体的在Servlet中的获取配置文件的代码如下:

// 获取Serlet的上下文环境
ServletContext context = this.getServletContext();
// 获取资源流,context获取资源流的路径是相当于在servlet-02-1.0-SNAPSHOT目录
InputStream is = context.getResourceAsStream("/WEB-INF/classes/db.properties");
Properties pros = new Properties();
pros.load(is);

结论:在Servlet中获取配置文件的方式不同相对路径也不尽相同,所以要根据你的需要来选择加载配置文件的方式
希望我微不足道的见解可以帮到你~~

你可能感兴趣的:(Servlet,配置文件,maven,java,前端,servlet,property)