javaBean+tomcat+MySql数据库连接池三步曲(原创)
来源:互联网 发布:vb编写软件 编辑:程序博客网 时间:2024/06/05 07:35
最近学习jsp,现将心得给大家一起分享,水平有限,高手勿见笑.
如题,开始吧
第一步: 创建数据库并在tomcat下配置链接池
1.创建数据库
在mysql下创建名为testdb的数据库,在testdb下创建数据表test_table.字段id,name
2.tomcat配置
我们在C:/Program Files/Tomcat 5.5.7/conf/content.xml文件中添加如下数据库链接池配置,如果没有就新建一个content.xml,注意tomcat版本要5.5以上,5.5以下不支持content.xml。
<Context>
<Resource name="jdbc/testdb"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/mytestdb"
username="root"
password="******"
maxActive="100"
maxIdle="30"
maxWait="10000"
></Resource>
</Context>
<Resource name="jdbc/testdb"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/mytestdb"
username="root"
password="******"
maxActive="100"
maxIdle="30"
maxWait="10000"
></Resource>
</Context>
第二步:编写javaBean读取tomcat下的content.xml
javaBean 文件DataBase.java代码
package withouttears.bean;
import java.util.HashMap;
import java.sql.*;
//JNDI有两个核心接口Context和DirContext,
//Context中包含了基本的名字操作,而DirContext则将这些操作扩展到目录服务。
import javax.naming.Context;
import javax.naming.InitialContext;
//数据库资源的连接工厂是javax.sql.DataSource对象,
//它可以创建java.sql.Connection数据库连接对象。
import javax.sql.DataSource;
//目前您可以从Java开发者连接(http://java.sun.com/products/jdbc/download.html#rowsetcobundle1_0)
//下载CachedRowSet的实现。下载并解压缩安装文件后,将"rowset.jar"文件放到您的类目录下。
//CachedRowSet在sun.jdbc.rowset包中。
import sun.jdbc.rowset.CachedRowSet;
/** *//**
* <b>类</b>: DataBase<br>
* <b>版本</b>: 1.0.0<br>
* <b>作者</b>: wiThouTTears<br>
* <b>时间</b>: 2006-12-18<br>
* <b>QQ</b>: 314765755<br>
* <b>Email</b>: wiThouT--Tears@163.com<br>
* <b>Blog</b>: http://blog.csdn.net/withouttears/<br>
* <b>功能</b>: 用连接池连接MySql数据库及相关操作<br>
* */
public class Database ...{
/** *//**
* 数据库JNDI名称,默认:jdbc/testdb
* */
private String jndiName="jdbc/testdb";
/** *//**
* 建立连接池
* @param null
* @return DataSource
* */
private DataSource localhost()...{
DataSource ds=null;
//在HashMap中通过get()来获取value,通过put()来插入value,
//ContainsKey()则用来检验对象是否已经存在
HashMap<Object,Object> cachedDs=new HashMap<Object,Object> ();
if(cachedDs.containsKey("ds"))//取出空闲状态的数据库连接
...{
/**//* 在DataSource中事先建立了多个数据库连接,
* 这些数据库连接保存在连接池(Connect Pool)中。
* Java程序访问数据库时,只需要从连接池中取出空闲状态的数据库连接;
* 当程序访问数据库结束,再将数据库连接放回连接池。
* */
ds = (DataSource)cachedDs.get("ds");
}
else
try
...{
/**//*在javax.naming包中提供了Context接口,
* 该接口提供了将对象和名字绑定,以及通过名字检索对象的方法。
* */
Context initCtx = new InitialContext();
//lookup(String name):返回与指定的名字绑定的对象,获得数据库连接工厂
ds = (DataSource)initCtx.lookup("java:comp/env/"+getjndiName());
cachedDs.put("ds", ds);
}
catch(Exception e)
...{
e.printStackTrace();
}
return ds;
}
/** *//**
* 库的连接
* @param null
* @return Connection
* */
public Connection getConnection()...{
Connection conn = null;
try...{
DataSource ds = localhost();
conn = ds.getConnection();
}
catch(Exception e)...{
e.printStackTrace();
}
return conn;
}
/** *//**
* 关闭连接
* @param conn
* @return null
* @since 1.2
* */
public static void close(Connection conn)...{
try...{
if(conn != null)
conn.close();
}
catch(SQLException e)...{
e.printStackTrace();
}
}
/** *//**
* 执行查询操作
* @param sql
* @return ResultSet
* */
public CachedRowSet executeQuery(String sql)
...{
Connection conn=null;
CachedRowSet rs=null;
try...{
rs=new CachedRowSet();
conn=getConnection();
Statement stmt=conn.createStatement();
ResultSet rs1=stmt.executeQuery(sql);
rs.populate(rs1);
}
catch(Exception e) ...{
System.out.println(e.toString());
}
finally...{
try...{
conn.close();
}
catch(Exception ex)...{}
}
return rs;
}
/** *//**
* 执行数据的插入、删除、修改操作
* @param sql
* @return boolean
* */
public boolean executeUpdate(String sql)...{
boolean bl;
bl = false;
Connection conn = getConnection();
try...{
Statement stmt = conn.createStatement();
if(stmt.executeUpdate(sql) > 0)
stmt.close();
bl = true;
}
catch(SQLException e)...{}
finally...{
close(conn);
}
return bl;
}
/** *//**
* 获得数据库JNDI名称
* @param null
* @return String
* */
public String getjndiName()...{
return this.jndiName;
}
/** *//**
* 设置数据库JNDI名称
* @param jndiName
* @return true|false
* */
public boolean setjndiName(String jndiName)...{
this.jndiName = jndiName;
return true;
}
}
import java.util.HashMap;
import java.sql.*;
//JNDI有两个核心接口Context和DirContext,
//Context中包含了基本的名字操作,而DirContext则将这些操作扩展到目录服务。
import javax.naming.Context;
import javax.naming.InitialContext;
//数据库资源的连接工厂是javax.sql.DataSource对象,
//它可以创建java.sql.Connection数据库连接对象。
import javax.sql.DataSource;
//目前您可以从Java开发者连接(http://java.sun.com/products/jdbc/download.html#rowsetcobundle1_0)
//下载CachedRowSet的实现。下载并解压缩安装文件后,将"rowset.jar"文件放到您的类目录下。
//CachedRowSet在sun.jdbc.rowset包中。
import sun.jdbc.rowset.CachedRowSet;
/** *//**
* <b>类</b>: DataBase<br>
* <b>版本</b>: 1.0.0<br>
* <b>作者</b>: wiThouTTears<br>
* <b>时间</b>: 2006-12-18<br>
* <b>QQ</b>: 314765755<br>
* <b>Email</b>: wiThouT--Tears@163.com<br>
* <b>Blog</b>: http://blog.csdn.net/withouttears/<br>
* <b>功能</b>: 用连接池连接MySql数据库及相关操作<br>
* */
public class Database ...{
/** *//**
* 数据库JNDI名称,默认:jdbc/testdb
* */
private String jndiName="jdbc/testdb";
/** *//**
* 建立连接池
* @param null
* @return DataSource
* */
private DataSource localhost()...{
DataSource ds=null;
//在HashMap中通过get()来获取value,通过put()来插入value,
//ContainsKey()则用来检验对象是否已经存在
HashMap<Object,Object> cachedDs=new HashMap<Object,Object> ();
if(cachedDs.containsKey("ds"))//取出空闲状态的数据库连接
...{
/**//* 在DataSource中事先建立了多个数据库连接,
* 这些数据库连接保存在连接池(Connect Pool)中。
* Java程序访问数据库时,只需要从连接池中取出空闲状态的数据库连接;
* 当程序访问数据库结束,再将数据库连接放回连接池。
* */
ds = (DataSource)cachedDs.get("ds");
}
else
try
...{
/**//*在javax.naming包中提供了Context接口,
* 该接口提供了将对象和名字绑定,以及通过名字检索对象的方法。
* */
Context initCtx = new InitialContext();
//lookup(String name):返回与指定的名字绑定的对象,获得数据库连接工厂
ds = (DataSource)initCtx.lookup("java:comp/env/"+getjndiName());
cachedDs.put("ds", ds);
}
catch(Exception e)
...{
e.printStackTrace();
}
return ds;
}
/** *//**
* 库的连接
* @param null
* @return Connection
* */
public Connection getConnection()...{
Connection conn = null;
try...{
DataSource ds = localhost();
conn = ds.getConnection();
}
catch(Exception e)...{
e.printStackTrace();
}
return conn;
}
/** *//**
* 关闭连接
* @param conn
* @return null
* @since 1.2
* */
public static void close(Connection conn)...{
try...{
if(conn != null)
conn.close();
}
catch(SQLException e)...{
e.printStackTrace();
}
}
/** *//**
* 执行查询操作
* @param sql
* @return ResultSet
* */
public CachedRowSet executeQuery(String sql)
...{
Connection conn=null;
CachedRowSet rs=null;
try...{
rs=new CachedRowSet();
conn=getConnection();
Statement stmt=conn.createStatement();
ResultSet rs1=stmt.executeQuery(sql);
rs.populate(rs1);
}
catch(Exception e) ...{
System.out.println(e.toString());
}
finally...{
try...{
conn.close();
}
catch(Exception ex)...{}
}
return rs;
}
/** *//**
* 执行数据的插入、删除、修改操作
* @param sql
* @return boolean
* */
public boolean executeUpdate(String sql)...{
boolean bl;
bl = false;
Connection conn = getConnection();
try...{
Statement stmt = conn.createStatement();
if(stmt.executeUpdate(sql) > 0)
stmt.close();
bl = true;
}
catch(SQLException e)...{}
finally...{
close(conn);
}
return bl;
}
/** *//**
* 获得数据库JNDI名称
* @param null
* @return String
* */
public String getjndiName()...{
return this.jndiName;
}
/** *//**
* 设置数据库JNDI名称
* @param jndiName
* @return true|false
* */
public boolean setjndiName(String jndiName)...{
this.jndiName = jndiName;
return true;
}
}
第三步: 编写test.jsp测试
<%@page import="withouttears.bean.Database"%>
<%@page import="java.sql.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title here</title>
</head>
<body>
<%
Database db=new Database();
db.setjndiName("jdbc/testdb");//初始化JNDI名称
ResultSet rs=db.executeQuery("select * from test_table");
while(rs.next())...{
out.println("id:"+rs.getInt("id")+"<br>");
}
rs.close();
%>
</body>
</html>
<%@page import="java.sql.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title here</title>
</head>
<body>
<%
Database db=new Database();
db.setjndiName("jdbc/testdb");//初始化JNDI名称
ResultSet rs=db.executeQuery("select * from test_table");
while(rs.next())...{
out.println("id:"+rs.getInt("id")+"<br>");
}
rs.close();
%>
</body>
</html>
好了,打开浏览器输入:http://localhost:8080/test.jsp,在Windows2000Pro+tomcat5.5.7下通过。
- javaBean+tomcat+MySql数据库连接池三步曲(原创)
- jsp+javabean+mysql数据库连接
- [原创]Tomcat+MySql数据库连接池配置经验实例
- javabean数据库连接池(tomcat上配置)
- tomcat-mysql数据库连接池
- tomcat-mysql数据库连接池
- Eclipse+Tomcat实现Mysql数据库连接
- Tomcat 5.5+MySQL 数据库连接池
- Eclipse+Tomcat实现Mysql数据库连接
- tomcat 配置mysql 数据库连接池
- tomcat配置mysql数据库连接池
- 如何tomcat下配置jsp、servlet.JavaBean.数据库连接池.虚拟目录
- Tomcat数据库连接池 + JavaBean + 分页技术 + JDBC3.0 + 大型数据库
- tomcat下配置jsp、servlet.JavaBean.数据库连接池.虚拟目录
- Tomcat数据库连接池 + JavaBean + 分页技术 + JDBC3.0 + 大型数据库
- jsp+tomcat+mysql&sevlet&javabean配置全过程
- jsp+tomcat+mysql&sevlet&javabean配置全过程
- jsp+tomcat+mysql & sevlet & javabean 配置全过程
- getAttribute 和 getParameter 的区别
- 写在年关
- CSS中的滑动门技术
- asp.net 的TreeView递归加载
- Div+CSS布局入门教程
- javaBean+tomcat+MySql数据库连接池三步曲(原创)
- Log4J用法
- Java基础知识——Java入门与加深
- jsp入门
- 06年21大科技丑闻出炉:索尼电池起火居首
- 我要开始写我的blog日志了
- 常见时间处理问题
- [Web]Web编程语言 之 我选择我喜欢
- 如何删除windowsXP的计算器