今天晚上花了兩小時,總算能正確對Tomcat配置數據源了,如今寫出來和你們分享一下。(紅色字體爲大概步驟)
第一步:
下載安裝好Tomcat的admin插件,在次就不介紹了,讀者能夠到網上找找相關資料。
第二步:
JNDI Name: jdbc/mysql
Data Source URL: jdbc:mysql://localhost:3306/mysql (注意此處不要填錯,這個問題花了我很多時間,3306後面是「/」,而不是「?」,mysql是數據庫名字)
JDBC Driver Class:
User Name: root
Password: ******
Max. Active Connections: 4
Max. Idle Connections: 2
Max. Wait for Connection: 5000
Validation Query:
輸完後,成後點擊\"save\"。記得要再點擊上面的\"Commit Changes\"。這時查看server.xml文件能夠看到多了兩個<Resource/>元素,內容以下:
<Resource
name="jdbc/mysql"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="root"
maxWait="5000"
driverClassName="com.mysql.jdbc.Driver"
password="yqs2602555"
url="jdbc:mysql://localhost/mysql"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
第三步:
將mysql驅動包放入Tomcat_Home/common/lib下(此處也要注意)和應用程序的lib目錄下。
第四步:
配置context.xml文件,在<webapp></webapp>中加入以下內容:
<Resource
auth="Container"
description="User database that can be updated and saved"
name="jdbc/mysql"
type="javax.sql.DataSource"
username="root"
maxActive="4"
maxIdle="2"
maxWait="5000"
driverClassName="com.mysql.jdbc.Driver"
password="yqs2602555"
url="jdbc:mysql://localhost/mysql"/>
第五步:
配置web.xml文件,加入以下內容:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<web-app >
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
整個配置就到此結束,下面就是寫應用程序測試了!編寫testds.jsp以下:
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%!
final String JNDINAME = "java:comp/env/jdbc/mysql";
%>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(JNDINAME);
conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from article");
while(rs.next()) {
out.println(rs.getString("title"));
}
} catch(Exception e) {
e.printStackTrace();
}
%>
<%
try {
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
%>
就能夠看到mysql數據庫下article這張表title字段的內容了。