从零开始学JDBC--1.9 代码抽取--使用Properties读取配置文件


为了更灵活的对项目进行配置,我们采用db.properties文件将配置信息存储起来,然后用Properties类去读取,代码如下:

    Properties props = new Properties();
    FileInputStream in = new FileInputStream("./src/db.properties");

    props.load(in);

    url = props.getProperty("url");
    user = props.getProperty("user");
    password = props.getProperty("password");
    driverClass = props.getProperty("driverClass");


但是这样又带来了新的问题:

  当项目部署在javaSE上时自然没什么问题,但是如果要部署在javaWeb项目上时,一定会出现如下错误:

java.io.FileNotFoundException: .\src\db.properties (系统找不到指定的路径。)

为什么呢?
原因是:
A: 在javaSE项目中,“.”代表java命令的运行目录从项目的根目录开始
B: 在Web项目中,“.”代表java命令的运行目录从tomcat/bin目录开始

临时解决:可以将db.properties文件添加到tomcat/bin/src目录下(需手动创建src文件夹)
缺点:只能读,不能修改,一旦修改,整个web项目将自动重新加载,影响客户使用

之前在web项目中可以使用ServletContext对象的getRealpath()方法来加载该文件,但是在javaSE项目中是无法获取ServletContext的,很矛盾

最终,有个更通用的方法来解决这个问题:
使用类路径的读取方法
这样,即使写的是同样的路径,也不会影响到配置文件的加载

具体做法:
注意:配置文件db.properties都是放在src目录下的

类路径的获取方法:
$当前类名.class.getResourceAsStream(“/db.properties”)

“/” 代表classpath的根目录
在java项目下,classpath的根目录从 bin目录开始
在Web项目下,classpath的根目录从 WEB-INF/classes/目录开始

props = new Properties();
InputStream in = JdbcUtil.class.getResourceAsStream("/db.properties");
props.load(in);


这种方式是迄今为止,最通用的加载方式,确保不论是在java项目中还是web项目中都不会出问题!因为这种方法找到的是始终是以classpath为参照的

如果仅仅是在Web项目中,获取加载文件还有一种方法,配置文件需要放在src目录下:

prop = new Properties();
prop.load(new FileReader(BasicFactory.class.getClassLoader().getResource("config.properties").getPath()));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值