dbcp实例代码:
static{
InputStream in = JdbcUtil.class.getClassLoader().
getResourceAsStream("dbcpconfig.properties");
Properties prop = new Properties();
prop.load(in);
BasicDataSourceFactory factory = new BasicDataSourceFactory();
dataSource = factory.createDataSource(prop);
}
DBCPUtils.java;
DBCPUtils..java:
package com.heima.utils;
import java.awt.image.DataBuffer;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DBCPUtils {
private static DataSource ds ;
static {
//将配置文件加载进来
InputStream in = DBCPUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties") ;
Properties props = new Properties() ;
try {
props.load(in) ;
ds = BasicDataSourceFactory.createDataSource(props) ;
} catch (Exception e) {
throw new RuntimeException("服务器忙") ;
}
}
//提供获取连接的方法
public static Connection getConnection(){
try {
return ds.getConnection() ;
} catch (SQLException e) {
throw new RuntimeException("服务器忙") ;
}
}
}
dbcpconfig.properties:
#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day19
username=root
password=sorry
#
initialSize=10
#最大连接数量
maxActive=50
#
maxIdle=20
#
minIdle=5
#
maxWait=60000
#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=utf8
#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true
#driver default 指定由连接池所创建的连接的只读(read-only)状态。
#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
defaultReadOnly=
#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=REPEATABLE_READ
C3p0Utils.java:
package com.heima.utils;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3p0Utils {
private static DataSource ds ;
static{
ds = new ComboPooledDataSource() ;
}
//提供获取连接的方法
public static Connection getConnection(){
try {
return ds.getConnection() ;
} catch (SQLException e) {
throw new RuntimeException("服务器忙") ;
}
}
}
C3p0-config.xml:
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/day16
root
root
5
10
5
20
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/day16
root
root
5
10
5
20
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/day16
root
root
5
10
5
20
tomcat服务器使用数据源的时候,自带有了tomcat-dbcp.jar这个数据源了,所以不用拷贝jar包了
JNDI就好比window系统的注册表,它是一个Map结构。key是一个由路径和名称组成的字符串,value就是绑定的一个对象。
3.利用Tomcat管理数据源:
a、拷贝数据库驱动jar包到Tomcat\lib目录下
b、在应用的META-INF目录下建立一个名称为context.xml的配置文件
c、启动Tomcat,数据源就给你建好了
d、在应用中如何获取数据源(也可在jsp页面中获取)
public void add() throws Exception {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/day16");
Connection conn = ds.getConnection();
System.out.println(conn);
}
或者写成一句:
<%
Context initContext = new InitialContext();
// Context envContext = (Context) initContext.lookup("java:/comp/env");
//DataSource ds = (DataSource) envContext.lookup("jdbc/day16");
DataSource ds = (DataSource) initContext.lookup("java:/comp/env/jdbc/day16") ;
Connection conn = ds.getConnection();
out.write(conn.toString() + "jjjjj") ;
%>
特别注意:不要在main方法中获取数据源,获取不到