当前位置:网站首页>解决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();
}
}
修改完成之后重启服务,即可解决此问题。
边栏推荐
猜你喜欢

Code Refactoring: For Unit Testing

Cannot read properties of null (reading 'insertBefore')

Unity Visual Effect Graph入门与实践

TensorRT例程解读之语义分割demo

企业需要知道的5个 IAM 最佳实践

Canal mysql data synchronization

FLV格式详解

3面头条,花7天整理了面试题和学习笔记,已正式入职半个月

高性能高可靠性高扩展性分布式防火墙架构

Tactile intelligent sharing - SSD20X realizes upgrade display progress bar
随机推荐
7.18 Day23----标记语言
Grain Mall - Basics (Project Introduction & Project Construction)
OpenRefine开源数据清洗软件的GREL语言
嵌入式系统驱动初级【4】——字符设备驱动基础下_并发控制
音视频相关基础知识与FFmpeg介绍
7、特殊SQL的执行
一个对象引用的思考
8. Custom mapping resultMap
力扣题解8/3
Landing, the IFC, GFC, FFC concept, layout rules, forming method, use is analysed
如何低成本修bug?测试左移给你答案
读者让我总结一波 redis 面试题,现在肝出来了
自动化测试的成本高效果差,那么自动化测试的意义在哪呢?
程序员也应了解的Unity粒子系统
解决安装nbextensions后使用Jupyter Notebook时出现template_paths相关错误的问题
phpexcel导出数据为xml
代码重构:面向单元测试
腾讯136道高级岗面试题:多线程+算法+Redis+JVM
Unity表格配置编辑工具
Cannot read properties of null (reading ‘insertBefore‘)