当前位置:网站首页>解决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();
}
}
修改完成之后重启服务,即可解决此问题。
边栏推荐
- Cannot read properties of null (reading ‘insertBefore‘)
- Do you think border-radius is just rounded corners?【Various angles】
- MediaCodec支持的类型
- 注意!软件供应链安全挑战持续升级
- Can‘t connect to MySQL server on ‘localhost3306‘ (10061) 简洁明了的解决方法
- 力扣:62.不同路径
- DP4398:国产兼容替代CS4398立体声24位/192kHz音频解码芯片
- 力扣:96.不同的二叉搜索树
- FFmpeg源码分析:avformat_open_input
- 7.13 Day20----MYSQL
猜你喜欢
随机推荐
php将多维数据保存进json文件
PHP实现异步执行程序
在被面试官说了无数次后,终于潜下心来整理了一下JVM的类加载器
8.03 Day34---BaseMapper查询语句用法
7.16 Day22---MYSQL (Dao mode encapsulates JDBC)
The Road to Ad Monetization for Uni-app Mini Program Apps: Full Screen Video Ads
SLSA 框架与软件供应链安全防护
npm报错Beginning October 4, 2021, all connections to the npm registry - including for package installa
8大软件供应链攻击事件概述
7.18 Day23 - the markup language
Can 't connect to MySQL server on' localhost3306 '(10061) simple solutions
代码重构:面向单元测试
想好了吗?
7. Execution of special SQL
Cannot read properties of null (reading 'insertBefore')
力扣:96.不同的二叉搜索树
MySql data recovery method personal summary
canal实现mysql数据同步
MySQL date functions
高性能高可靠性高扩展性分布式防火墙架构




![Deploy LVS-DR cluster [experimental]](/img/ad/84e05a6421d668b0b6ba6eeba0c730.jpg)




