dbcp连接池的基本使用
1、依赖api的使用
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.0</version>
</dependency>
-
导入dbcp.properties配置文件
-
获取连接
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
Properties properties=new Properties();
//获取dbcp配置文件对应输入流
InputStream inputStream=DbcpServlet.class.getClassLoader().getResourceAsStream("dbcp.properties");
//加载dbcp配置文件
properties.load(inputStream);
BasicDataSource basicDataSource=null;
try {
//数据源对象
basicDataSource=BasicDataSourceFactory.createDataSource(properties);
//获取数据库连接
Connection connection=basicDataSource.getConnection();
System.out.println(connection);
} catch (Exception e) {
e.printStackTrace();
}
}
2、依赖tomcat容器的使用
利用jndi机制实现,jndi(命名及目录查找接口),将数据源连接池的配置信息在容器(Tomcat)实现配置
具体如何实现配置
-
在tomcat的context.xml文件加入数据源配置
<Resource
<!--数据源名字-->
name="jdbc/news"
<!--验证数据源的容器类型-->
auth="Container"
type="javax.sql.DataSource"
<!--最大连接数据库连接对象的数量100-->
maxActive="100"
<!--最大空闲数是30-->
maxIdle="30"
<!--最大等待时间-->
maxWait="10000"
<!--数据库用户名-->
username="root"
<!--数据库密码-->
password="123456"
<!--数据库驱动-->
driverClassName="com.mysql.cj.jdbc.Driver"
<!--数据库url-->
url="jdbc:mysql://localhost:3306/yl?characterEncoding=utf8&serverTimezone=GMT%2B8"/> -
获取连接
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//获取上下文对象
Context ctx = new InitialContext();
//通过jndi命名服务,找到数据源配置
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/news");
//获取数据库连接
Connection connection = ds.getConnection();
if (!connection.isClosed()) {
System.out.println("连接成功");
}
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
} -
记得快乐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!