JSP之数据库连接池·笔记

连接池技术

连接池简介
  1. 通常情况下每访问一次数据库都要建立数据库的连接,当需要多次连接数据库的项目时就会消耗一定的资源,并延长了访问数据库的时间,当访问量较高时会影响系统的性能。所以连接池诞生了。所谓连接池就是一个容器,里面预先已经创建了几个连接了,当要连数据库时,直接调用连接池。连接池会自动分配接口来连接数据库,不需要频繁的建立连接。连接池还解决了数据库连接数量限制问题。它能有效的管理和调度多个连接池中的连接,从而解决数据库连接数量限制问题
  2. 连接处的原理过程
    (1)预先创建一定数量的连接池,存放在连接池中
    (2)当程序请求一个连接时,连接池会为该请求分配一个空闲的连接,为不是重新建立一个连接,当使用完连接后,该连接会重新回到连接池中,而不是直接释放
    (3)当连接池中空闲的连接数低于下限时,连接池的管理机制会自动追加一定数量的连接,当空闲数量高于上限时,连接池会释放一定数量的连接接口
  3. 连接池的优点
    (1)节省时间
    (2)提高了数据库的重复率
    (3)解决了数据库对连接数的数量限制
  4. 连接池的缺点
    (1)一定程度上浪费资源
    (2)要求开发人员准确估算提高的最大连接数的数量
在tomcat中配置连接池
  1. DCPC连接池技术
    (1)将所需的jar包复制到lib目录下
    mysql的jar包,DCPC的jar包,C3P0的jar包的等
    在这里插入图片描述

(2)配置数据源,即配置context.xml文件。可以在tomcat的安装目录的conf\server.xml文件中,也可以在Web工程的MWTA-INF\context.xml文件中,建议后者,应为这样更具有针对性,SQLServer为例:

<Context>
 <Resource name="TestJNDI" type="javax.sql.DataSource" auth="Container"
  driverClassName="com.microssft.sqlserver.jdbc.SQLServerDriver"
  url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=db_db_database"
  username="root" password="123456" maxActive="4" maxIdle="2" maxWait="6000" />
</Context>
  1. C3P0连接池技术
    C3P0的配置文件在web.xml中配置,可以定义多种数据库连接
//一个C3P0实例,只有修改自己相应的数据库信息,和一些细节就好了
<c3p0-config>
	<default-config>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">
     		jdbc:mysql://localhost:3306/jdbc
     	</property>
		<property name="user">root</property>
		<property name="password">itcast</property>
		<property name="checkoutTimeout">30000</property>
		<property name="initialPoolSize">10</property>
		<property name="maxIdleTime">30</property>
		<property name="maxPoolSize">100</property>
		<property name="minPoolSize">10</property>
		<property name="maxStatements">200</property>
	</default-config> 
	<named-config name="itcast">
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">
           	jdbc:mysql://localhost:3306/jdbc
        </property>
		<property name="user">root</property>
		<property name="password">itcast</property>
		<property name="initialPoolSize">5</property>
		<property name="maxPoolSize">15</property>
	</named-config>

  • C3P0也要导入相应的C3P0包,可以去官网下载才c3p0的jar包,用mysql的话也要导入MySQL的包哦,别忘记了
使用DCPC连接池技术访问数据库(实例)
//JSP界面
<%@ page language="java" import="javax.naming.*" pageEncoding="GB2312"%>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<html>
<body>
<%
try {
  	Context ctx = new InitialContext();
  	ctx = (Context) ctx.lookup("java:comp/env");
  	DataSource ds = (DataSource) ctx.lookup("TestJNDI");	//获取连接池对象
  	Connection conn=ds.getConnection();
  	Statement stmt=conn.createStatement();
  	String sql="SELECT * FROM tb_user";
  	ResultSet rs=stmt.executeQuery(sql);
  	while(rs.next()){
  		out.println("<br>用户名:"+rs.getString(2)+"	密码:"+rs.getString(3));
  	}
  	rs.close();
  	stmt.close();
  	conn.close();
} catch (NamingException e) {
  	e.printStackTrace();
}
%>
</body>
</html>
//需要配置一个contex.xml文件
<Context>
  	<Resource name="TestJNDI" type="javax.sql.DataSource" auth="Container"
  		driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
  	url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=db_sql"
  		username="sa" password="" maxActive="4" maxIdle="2" maxWait="6000" />
</Context>

  • 记得导入相应的sqljdbc.jar或者sqljdbc4.jar的jar包,这个实例就可以使用连接池访问数据库了
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值