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