在使用Eclipse+Lomboz+Tomcat6開發 Java Web的時候,如果要訪問如mysql 數據庫,可以使用tomcat自帶的數據源緩衝池。方法如下:
1、在使用mysql數據庫的時候,如同使用jdbc連接數據庫一樣,mysql的驅動jar包是一定需要的,可以放在tomcat安裝目錄的lib目錄下,必要的話,還要想設置java的jdk一樣,設置環境變量,是CATALINA =tomcat的安裝目錄。將mysql的jar包放在%CATALINA_HOME%/lib的目錄下;
2、配置tomcat/conf/server.xml文件,
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase"
auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="jdbc/mysqls"
type="javax.sql.DataSource"
password="zhou"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="30"
maxWait="10000"
username="root"
url="jdbc:mysql://localhost:3306/dbdemo"
maxActive="100"/>
</GlobalNamingResources>
<ContextdocBase="guestbook" path="/guestbook5"reloadable="true"source="org.eclipse.jst.jee.server:guestbook">
<ResourceLink
name="jdbc/mysqls"
type="javax.sql.DataSource"
global="jdbc/mysqls"/>
</Context>
其中紅色是新加入的。
並且最好是將該server.xml文件拷貝一份放在\conf\Catalina\localhost目錄下,很關鍵,我就是因爲這一步沒弄,耽誤了很多時間。
3、在當前項目中,找到web.xml文件,添加
<resource-ref>
<res-ref-name>jdbc/mysqls</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
4、附上檢驗代碼:
1<%@ page language="java"import="java.util.*"
pageEncoding="UTF-8"%>
2<%@
pageimport="java.sql.*,javax.sql.*,javax.naming.*"%>
3
4<!DOCTYPE HTML PUBLIC"-//W3C//DTD
HTML 4.01 Transitional//EN">
5<html>
6 <head>
7 <title>My
JSP'index.jsp' starting page</title>
8 </head>
9
10 <body>
11 <%
12 Context initCtx=null;
13 final String
JNDINAME=
"java:comp/env/jdbc/MySQL";//java:comp/env/是固定的,jdbc/MySQL則是我們配置的JNDI名稱
14 Connection conn=null;
15 try{
16 initCtx=new
InitialContext();
17 DataSource ds=
(DataSource) initCtx.lookup(JNDINAME);
18 conn=
ds.getConnection();
19 out.println("數據連接爲:"+
conn);
20
}
catch (NamingException e){
21 e.printStackTrace();
22
}
catch (SQLException e){
23 e.printStackTrace();
24
}
finally{
25 if
(conn !=
null){
26 try{
27 conn.close();
28
}
catch (SQLException e){
29 e.printStackTrace();
30 }
31 }
32 }
33 %>
34 <br>
35 </body>
36</html>
37若成功,則輸出:
數據連接爲:jdbc:mysql://localhost:3306/test?autoReconnect=true, UserName=root@localhost, MySQL-AB JDBC Driver