解决JDBC在web工程中无法获取配置文件
一、错误描述
在javaweb项目中,通过前端页面发送表单数据到Servlet程序并进行插入数据到数据库中的操作时,出现空指针异常,如下图所示:
通过异常信息,我们可以发现,是我们的 JDBCUtiles 类出现了异常,那么我们对JDBCUtiles 进行 debug 调试,发现是数据库连接出现了问题:
从上面的debug信息我们可以看到,我们的配置文件获取值为null,进而导致我们的数据库连接为 null ,出现这一现象的主要原因是我们的配置文件没有获取到
二、解决方案
- 首先检查配置文件的位置是否正确,我这里是没有问题的
- 其次看一下我这里使用的获取配置文件的方式:
static{
try {
Properties properties = new Properties();
InputStream resourceAsStream = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
properties.load(resourceAsStream);
source1 = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
上边这种获取方式采用的是 静态代码块 + 系统类加载器 的方式来获取配置文件,但是在我们的javaweb项目部署过程中文件目录可能会发生变化,所以这种方式可能会获取不到配置文件,所以我们可以 将 系统类加载器 修改为 当前类加载器 ,如下所示:
static{
try {
Properties properties = new Properties();
InputStream resourceAsStream = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
properties.load(resourceAsStream);
source1 = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
修改完成之后重启服务,即可解决此问题。
|