1、创建数据库Student,表student
2、配置server.xml文件。Tomcat安装目录下conf中server.xml文件。
<GlobalNamingResources>
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/student"
maxActive="3"
/>
</GlobalNamingResources>
name:指定连接池的名称
type:指定连接池的类,他负责连接池的事务处理
url:指定要连接的数据库
driverClassName:指定连接数据库使用的驱动程序
username:数据库用户名
password:数据库密码
maxWait:指定最大建立连接等待时间,如果超过此时间将接到异常
maxIdle:指定连接池中连接的最大空闲数
maxActive:指定连接池最大连接数
3、配置web.xml文件。
<web-app>
<resource-ref>
<description>mysql数据库连接池配置</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
4、配置context.xml文件
与server.xml文件所在的位置相同。
<Context>
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"
/>
</Context>
5、测试
DataSource pool = null
Context env = null
Connection conn = null
Statement st = null
ResultSet rs = null
try{
env = (Context)new InitialContext().lookup("java:comp/env")
//检索指定的对象,返回此上下文的一个新实例
pool = (DataSource)env.lookup("jdbc/DBPool")
//获得数据库连接池
if(pool==null){out.printl("找不到指定的连接池!")}
con = pool.getConnection()
st = con.createStatement()
rs = st.executeQuery("select * from student")
}catch(Exception ex){out.printl(ne.toString())}
1.让tomcat容器启动创建数据库连接池2.在某个项目中关联数据库连接池,3.取得数据库连接池并使用。使用包括,当拿到数据库连接后,可以通过2种方式来使用,1.使用jstl的标签,2.封装成返回connection的方法。是自己编的 可以引用 连接池思想就是这个啊不过你可以下载 已经编好的连接池 上面有API 自己可以按照这个思想 就回用 了;
import java.io.FileInputStream
public class ConnectionPool{
private Vector<Connection>pool
private String url
private String username
private String password
private String driverClassName
// 连接池的大小,也就是连接池中有多少个数据库连接。
private int poolSize = 1
private static ConnectionPool instance =null
//私有的构造方法,禁止外部创建本类的对象。
// 使用了设计单子模式
private ConnectionPool(){
init()
}
// 返回当前连接池的一个对象
public static ConnectionPool getInstance(){
if(instance==null){
instance=new ConnectionPool()
}
return instance
}
//连接池初始化方法,读取属性文件的内容,建立连接池中的初始连接
private void init(){
pool= new Vector<Connection>(poolSize)
addConnection()
}
//返回连接到连接池中
public synchronized void release(Connection conn){
pool.add(conn)
}
// 关闭连接池中的所有数据库连接
public synchironized void closePool(){
for(int i=0i<pool.size()i++){
try{
((Connection)pool.get(i)).close()
}catch(SQLExcepiton e){
e.printStachTrace()
}
pool.remove(i)
}
}
/**
* 返回连接池中的一个数据库连接
*/
public synchronized Connection getConnection(){
if(pool.size()>0){
Connection conn = pool.get(0)
pool.remove(conn)
return conn
}else{
return null
}
}
// 在连接池中创建初始设置的的数据库连接
private void addConnection(){
Connection conn = null
for (int i=0i<poolSizei++){
try{
Class.forName(driverClassName)
conn=java.sql.Drivermanager.getConnection(url,username,password)
pool.add(conn)
}catch(ClassNotFoundException e){
e.printStachTrace()
}catch(){}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)