配置Tomcat的conf/context.xml文件:
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!--<Environment name="root" value="root" type="java.lang.String"></Environment>-->
<!--<Environment name="JNDITest" value="JNDITestDemo" type="java.lang.String"></Environment>-->
<Resource
driverClassName="com.mysql.jdbc.Driver"
name="news"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="root"
password="root"
url="jdbc:mysql://localhost:3306/news?useUnicode=true&characterEncoding=GBK">
</Resource>
项目里配置web.xml:
<resource-ref>
<res-ref-name>news</res-ref-name> //对应上面的name
<res-type>javax.sql.DataSource</res-type> //对应上面的type
<res-auth>Container</res-auth> //对应上面的auth
</resource-ref>
编写:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class BasePoolDao {
Connection con;
PreparedStatement ps;
ResultSet rs;
public void getConnetion(){
try {
//获得对数据源的引用:
Context context=new InitialContext();
//java:comp/env/是java中JNDI固定写法,后面跟库名。
DataSource ds=(DataSource) context.lookup("java:comp/env/news");
//获得数据库连接对象:
con=ds.getConnection();
ps=con.prepareStatement("select * from news");
rs=ps.executeQuery();
while(rs.next()){
System.out.println(rs.getString("NewTitle"));
}
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
close();
}
}
//关闭连接
public void close(){
try {
if(rs!=null)
rs.close();
if(ps!=null)
ps.close();
if(con!=null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
测试只能在Tomcat里面测试,不能在application里面测试。
在jsp里编写测试代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.*"%>
<%@page import="javax.naming.*"%>
<%@page import="javax.sql.DataSource"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/comp/env/news");
Connection conn = ds.getConnection();
out.println(conn);
conn.close();
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
%>
</body>
</html>