在TOMCAT中找到apache-tomcat-7.0.82---->conf---->server.xml这个文件或者
在eclipse中:
(反正要让你修改这个文件生效)
内容如下:(找到最后的哪个节点:</host>之前)
<Context docBase="shop" path="/shop" reloadable="true" source="org.eclipse.jst.jee.server:shop">
<Resource
name="jdbc/shop"
scope="Shareable"
type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"
driverClassName ="com.mysql.jdbc.Driver"
username="root"
password="rootroot123"
maxActive="100"
maxIdle="30"
maxWait="10000" />
</Context>
然后在写一个servlet或者jsp页面来测试它,在main方法里面测试是不行的。
<%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %>
<%@ page import="javax.naming.*,java.sql.*,javax.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>测试Tomcat数据源</title>
</head>
<body>
<%
//初始化Context,使用InitialContext初始化Context
Context ctx=new InitialContext();
/*
通过JNDI查找数据源,该JNDI为java:comp/env/jdbc/dstest,分成两个部分
java:comp/env是Tomcat固定的,Tomcat提供的JNDI绑定都必须加该前缀
jdbc/dstest是定义数据源时的数据源名
*/
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/shop");
//获取数据库连接
Connection conn=ds.getConnection();
//获取Statement
Statement stmt=conn.createStatement();
//执行查询,返回ResulteSet对象
ResultSet rs=stmt.executeQuery("select * from mmanager");
while(rs.next())
{
out.println(rs.getString(1)
+ "\t" + rs.getString(2) + "<br/>");
}
%>
</body>
</html>
上面的代码满篇复制过去都可以,注意要修改的地方一定要改改。
servlet来测试:
import java.io.IOException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
public class JndiTestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public JndiTestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
Context ctx = null;
DataSource ds = null;
Connection con = null;
try {
ctx = new InitialContext();
String strLookup = "java:comp/env/jdbc/shop";
ds = (DataSource) ctx.lookup(strLookup);
con = ds.getConnection();
DatabaseMetaData meta = con.getMetaData();
ResultSet rs = meta.getCatalogs();
while(rs.next()){
System.out.println(rs.getString(1));
}
} catch (NamingException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (con != null) {
System.out.print("success");
} else {
System.out.print("failure");
}
}
}
这段代码如果运行的时候没有报错,一般就可以断定成功。需要用jsp页面来调用这个servlet。
这个是整个项目的web.xml文件经过上面的配置,整个里面的引用可有可无(测试过)
<!--
数据源引用可有可无
<resource-ref>
<description>DBConnection</description>
<res-ref-name>jdbc/shop</res-ref-name>
<res-type>java.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
-->
这个就是针对单个项目的数据源的配置;