这里使用的Web服务器是Tomcat服务器
方法一、
1.1 配置context.xml文件
context.xml文件路径: D:\Tomcat 7\conf\context.xml 路径是参考,根据实际情况寻找context.xml
在<Context>节点下添加<Resource>标签元素
<Context>
<Resource name="jdbc/news" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" username="root"
password="123" driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/newsmanagersystem?
useUnicode=true&characterEncoding=utf-8"/>
</Context>
Resource元素属性,属性名不能自定义,不要打错
属性 | 说明 |
name | Resource的JNDI名字 |
auth |
指定管理Resource的Manager,有两个可选值:Container和Application。 Container:表示有容器创建Resource 。Application:表示有Web应用创建和管理Resource |
type | 指定Resource的Java类型 |
maxActive | 连接池最大连接对象数量 |
maxIdle | 连接池初始的连接对象数量 |
maxWait | 超出初始连接数量后的连接处于空闲状态的时间(时间过后如果还处于空闲状态被对象关闭) |
username | 数据库用户名 |
password | 数据库密码 |
driverClassName | 指定数据库的JDBC驱动程序 |
url | 指定数据库的连接地址(127.0.0.1:3306是回环地址) |
1.1 配置web.xml文件
web.xml文件的路径:WebRoot/WEB-INF/web.xml 路径是相对路径,相对Web项目
在<web-app>节点下添加<resource-ref>标签元素
<web-app>
<resource-ref>
<description>news DataSource</description>
<res-ref-name>jdbc/news</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
属性 | 说明 |
description | 对所引用资源的说明 |
res-ref-name | 指定所引用资源的JNDI名字,与<Resource>标签中的name属性对应 |
res-type | 指定所引用资源的类型,与<Resource>标签中的type属性对应 |
res-auth | 指定所引用资源的Manager,与<Resource>标签中的auth属性对应 |
方法二、
2.1 创建并配置context.xml文件
声明:这个方法不需要配置Tomcat服务器中的context.xml文件,也不需要配置Web项目中的web.xml文件
只需要在需要使用数据库连接池的Web项目中WebRoot目录下的META-INF目录中创建一个context.xml文件,添加<Context>节点,然后在节点中添加<Resource>节点以及其内容即可!(内容参照1.1配置context.xml文件)
在项目中从数据库连接池中获取数据库连接对象
此处不做过多解释,有疑问看代码中的注释
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
/**
* 定义数据库工具类型
* 实现方法:
* 1.获取数据库连接对象
* 2.关闭数据库对象的方法
* @return
*/
public class DatabaseUtil {
//定义getConnection()方法 即一个获取数据库连接对象的方法
public static Connection getConnection() {
//创建Context,DataSource,Connection的对象,但不实例化,方面后期实例化使用
//javax.naming包下的Context,这里声明其对象主要用其方法读取配置中的数据库池
Context ctx = null;
//javax.sql包下的DataSource,主要用于接收Context方法读取到的数据库连接池
DataSource ds = null;
//数据库连接对象,主要用于从DataSource中获取到一个数据库连接对象
Connection conn = null;
try {
//通过InitialContext()方法获取Context对象的实例
ctx = new InitialContext();
//通过Context的lookup()方法读取到连接池并强转成DataSource类型
//(DataSource)用于强转类型
//lookup方法中的写法:("java:comp/env/"+name属性值) java:comp/env/是固定路径写法 后面跟配置文件中的name属性值
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/news");
//使用.getConnection()方法从数据库中获取一个连接对象
conn = ds.getConnection();
} catch (NamingException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
//返回已经获得到的数据库连接对象,实现方法最终目的
return conn;
}
//关闭对象方法,和本文章无关,不多做解释
public static void closeAll(Connection conn,PreparedStatement pdst,ResultSet rest) {
try {
if(rest!=null) {
rest.close();
}
if(pdst!=null) {
pdst.close();
}
if(conn!=null) {
conn.close();
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
文章中如果有错误地方请留言或私信提示,文章写的有些许仓促,恐有错误的地方,请及时提示,一面误人子弟