在写web项目肯定避免不了访问数据库,那么连接池就来了,用tomcat服务器自带的连接池不需要再引入jar包,比较方便。方法:
- 先配置tomcat服务器的content.xml文件,里面可以配置多个连接池,用来访问不同的数据库,例如:
<Resource auth="Container" driverClassName="com.mysql.cj.jdbc.Driver"
maxIdle="30" maxTotal="100" maxWaitMillis="10000" name="dormitoryDBPC"
password="12345" type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/dormitory?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true"
username="root"/>
这个配置信息是连接版本8.0以上的数据库(mysql),如果是5.x则需要修改driverClassName和url的参数。
- auth这个属性默认不用修改
- maxIdle指最大空闲连接个数
- maxTotal指最大连接个数
- maxWaitMillis指最大等待时间
- name是你这个连接池的名字,用于区分其他连接池
- password,username和url就不说了,和连接数据库一模一样,但是url后的值一开始要加上jdbc:mysql
- type这个值不需要修改
大家可以直接把这个配置信息直接赋值粘贴到content.xml里的Context里就行,自己再把一些参数改改。在tomcat里配置好了之后在每一个web项目里都可以使用。
之后需要在想使用连接池的web项目里的web.xml再做配置。
打开WEB-INF里的web.xml,在web-app里加上
<resource-ref>
<res-ref-name>dormitoryDBPC</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
- 其中res-type和res-auth不需要需改,res-ref-name里的值是你在content.xml里配置好的连接池,接下来就可以后端使用连接池了。
//获取连接池中的链接
public static Connection getConn() {
Connection con =null;
Context ctx;
try {
ctx = new InitialContext(); //获取context.xml中的内容
DataSource ds = (DataSource)ctx.lookup("java:comp/env/dormitoryDBPC"); //获取数据源
try {
con = ds.getConnection(); //得到连接
con.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("获取连接错误");
}
} catch (NamingException e2) {
e2.printStackTrace();
System.out.println("获取数据源错误");
}
return con;
}
//释放连接
public static int closeConn(Connection con) {
int flag = -1;
try {
if(con!=null)con.close();
flag=0;
} catch (SQLException e) {
e.printStackTrace();
System.out.println("释放连接错误");
}
return flag;
}
获取释放连接操作如上,只需要将连接池的名字更改就行