当前位置:网站首页>解决JDBC在web工程中无法获取配置文件
解决JDBC在web工程中无法获取配置文件
2022-08-04 05:25:00 【**往事随風**】
解决JDBC在web工程中无法获取配置文件
一、错误描述
在javaweb项目中,通过前端页面发送表单数据到Servlet程序并进行插入数据到数据库中的操作时,出现空指针异常,如下图所示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PH4rDZtg-1647776851722)(img.assets/%E7%B4%A0%E6%9D%901-16471639870341.png)]](/img/0d/65378da5843c63f310797ec8790cd0.png)
通过异常信息,我们可以发现,是我们的 JDBCUtiles 类出现了异常,那么我们对JDBCUtiles 进行 debug 调试,发现是数据库连接出现了问题:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uZEy82yQ-1647776851723)(img.assets/image-20220313173721707.png)]](/img/18/d0c0227ca2d0cc901e15d5b3fec1f0.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7TEh7r6q-1647776851724)(img.assets/image-20220313173745065-16471642676092.png)]](/img/2e/69136b7fad70e606869e297b12a935.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fC17rrHm-1647776851724)(img.assets/image-20220313173851795-16471643335153.png)]](/img/b3/001f3ff6fd865581636d8e95f8bb03.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-maIBDP4a-1647776851725)(img.assets/image-20220313173948084-16471643898504.png)]](/img/fe/c05f12a18f04110cf1e984f21f2a4d.png)
从上面的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();
}
}
修改完成之后重启服务,即可解决此问题。
边栏推荐
猜你喜欢
随机推荐
MySQL数据库(基础)
12. Paging plugin
程序员的财富观
败给“MySQL”的第60天,我重振旗鼓,四面拿下蚂蚁金服offer
Unity行为树AI分享
力扣:746. 使用最小花费爬楼梯
string类简介
MySQL日志篇,MySQL日志之binlog日志,binlog日志详解
Swoole学习(一)
力扣:63. 不同路径 II
8.03 Day34---BaseMapper query statement usage
Web Basics and Exercises for C1 Certification - My Study Notes
心余力绌:企业面临的软件供应链安全困境
嵌入式系统驱动初级【3】——字符设备驱动基础中_IO模型
Unity表格配置编辑工具
解决安装nbextensions后使用Jupyter Notebook时出现template_paths相关错误的问题
力扣:96.不同的二叉搜索树
Canal mysql data synchronization
The difference between px, em, and rem
LCP 17. 速算机器人









