1 拥有必要的开发环境:tomcat+eclipse+jdk
2 安装mysql数据库:用户名/密码:root/admin
3 下载jar包:mysql-connector-java-5.0.8-bin.jar,commons-collections-3.1.jar,commons-dbcp-1.2.1.jar,commons-pool-1.2.jar
确保会引起找不到类 NoClassDefine错误,如找不到连接类,配置是factory生产失败,collectionlist错误等等麻烦的错误
4 该功能需要在web工程中调用,利用Container容器,上下文,java工程调用可能会失败
5 在tomcat中的server.xml内容开头编码格式可能为utf-8,会提示错误,将格式改为gbk的就可以了
6 配置使用数据源,有几个部分,tomcat中:server.xml,contex.xml;工程中web.xml
7 配置数据源前,可以先用java直接连接调用数据库,已验证所需数据均正确
配置 server.xml 部分内容:
<Context path="/alltest" docBase="D:\webdev\workspace\alltest\Web" debug="0" reloadable="true">
<Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://10.136.16.161:3306/test"
username="root"
password="admin"
maxActive="80"
maxIdle="10"
maxWait="-1"/>
</Context>
path:web访问路径
docBase:工程代码路径
Resource:配置工程所需要数据源
name:配置的数据源名称,名称可以随便取,但在java程序中调用时,需对应
type:数据源类型
factory:创建数据池的工厂(之前因缺包commons-dbcp-1.2.1.jar,commons-pool-1.2.jar,老报错)
driverClassName:连接mysql驱动(如连接oracle数据源,需修改)
url:连接数据库地址
username:数据库登陆用户名
password:username对应密码
maxActive:最大活动连接数
maxIdle:最大闲置连接数(顾名思义)
maxWait:最大等待连接数
配置context.xml:网上其他有的说需要配置这个文件,但我没有配,也能引用数据源
工程web.xml文件内容:
<resource-ref>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
res-ref-name:对应server.xml数据源配置中name
res-type:对应server.xml数据源配置中type
res-auth:对应server.xml数据源配置中auth
8 测试代码:
public void sqltest()
{
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
{
Context initcontext = new InitialContext();
DataSource ds = (DataSource)initcontext.lookup("java:/comp/env/jdbc/test");
conn = ds.getConnection();
if(!conn.isClosed())
System.out.println("连接数据库成功。。。");
else
System.out.println("连接数据库失败。。。");
//用来执行sql
stmt = conn.createStatement();
String sql = "select username from table1";
//获取结果集
rs = stmt.executeQuery(sql);
while(rs.next())
{
String name = rs.getString("username");
System.out.println("用户:" + name);
}
}catch(Exception ex)
{
ex.printStackTrace();
System.out.println("error:" + ex.getMessage());
}finally
{
//关闭数据库,否则会连接数过大
try
{
rs.close();
stmt.close();
conn.close();
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}
在web工程中某个jsp调用一下这个函数就可以了。
引用:http://blog.csdn.net/dyllove98/article/details/7706218