使用JNDI 来连接数据库,可以不用c3p0这些
第一步 首先进入tomcat 在自己的tomcat里面找到 service.xml ,编辑它
<Context path="/aaa" docBase='D:/ONE/Demo/WebRoot'/> 这段代码添加在</Host>之前
保存,然后使用浏览器输入 localhost:8080/aaa tomcat就可以自动的去访问Demo 如果页面报错你要添加 jstl-1.2.jar 因为你的这个Demo项目里面有jstl标签, tomcat访问的时候会去访问你的这个Demo,所以你需要这个包 这是第一步,判断是否能成功,
第二步 <Context path="/aaa" docBase='D:/ONE/Demo/WebRoot'>
<Resource name="jdbc/mysql " auth="Container"
type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql:///db909?characterEncoding=UTF8"
username="root" password="1234" maxActive="10" maxIdle="30"
maxWait="-1"/>
</Context>
name="jdbc/mysql " 这个表示资源的名称
auth="Container" 表示容器持有
driverClassName 加载驱动
url="jdbc:mysql:///db909?characterEncoding=UTF8" 连接的数据库
username="root"
password=""
maxActive="10" 最大数据连接池数量
maxIdle="30" 最大空闲时间
maxWait="-1" 表示连不上就崩溃
第三步 以上连好后 就将 连接数据库的包 放进 lib里面
第四步
import java.io.IOException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TwoServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try{
// 声明Context上下午查找对象
Context ctx = new InitialContext();
//查找运行环境
Context ctx1 = (Context) ctx.lookup("java:comp/env");
//从环境中找JDNI
Object obj = ctx1.lookup("jdbc/mysql");
System.out.println(obj);
//测试连接是否成功
DataSource ds = (DataSource) obj;
Connection con = ds.getConnection();
System.out.println(con);
}catch(Exception e){
e.printStackTrace();
}
}
}
以上是第一种连接的方法,如果想要简单点
可以将以上代码直接简化
Context ctx = new InitialContext();
//从环境中找JDNI
Object obj = ctx1.lookup("java:comp/env/jdbc/mysql");
System.out.println(obj); //测试连接是否成功
DataSource ds = (DataSource) obj;
Connection con = ds.getConnection();
System.out.println(con);
Statement st = con.createStatement();
ResultSet rs= st.executeQuery("select * from users");
while(rs.next()){
System.out.println(rs.getString(1));
}
完成
如果想不动service.xml可以这样
进入conf\catalina\localhost文件夹里面创建一个xy.xml文件,将
<Context docBase="D:/programfiles/MyEclipse10/wk3/day25/WebRoot">
<Resourcename="jdbc/mysql[W1] " auth="Containe[W2] r"
type="javax.sql.DataSource"driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql:///db909?characterEncoding=UTF8"
username="root"password="1234" maxActive="10" maxIdle="30"
maxWait="-1"/>
</Context>
将这句放进去
一个文件名就是一个项目
创建DatasourceUtils
package it;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DatasourceUtils {
private static DataSource ds;
static {
try{
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup(("java:comp/env/jdbc/mysql"));
}catch(Exception e){
e.printStackTrace();
}
}
public static DataSource getDs(){
return ds;
}
}
然后就是修改TwoServlet
import it.DatasourceUtils;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
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 TwoServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try{
DataSource ds = DatasourceUtils.getDs();
Connection con = ds.getConnection();
System.out.println(con);
Statement st = con.createStatement();
ResultSet rs= st.executeQuery("select * from users");
while(rs.next()){
System.out.println(rs.getString(1));
}
}catch(Exception e){
e.printStackTrace();
}
}
}
搞定成功 输入地址方式 localhost:8080/xy/项目名字