1、 在项目中新建context.xml文件,不要在tomcat服务器的目录中修改context.xml(会对整个服务器生效)。。 在web项目的META-INF中存放context.xml
2、在文件进行配置::: 配置数据库连接池的技术
1 <?xml version='1.0' encoding='utf-8'?>
2 <Context>
3 <Resource 4 driverClassName="com.mysql.jdbc.Driver" mysql驱动包
5 url="jdbc:mysql://localhost:3306/ssm" 连接
6 username="root" 账号
7 password="362222" 密码
8 maxActive="50" 最大连接数量
9 maxIdle="10" 等待连接的数量
10 name="test" 连接池的名称
11 auth="Container" 谁来管理(Container是tomcat服务器)
12 maxWait="10000" 超过10秒连接不上就报异常
13 type="javax.sql.DataSource" 这是java中专门的为连接数据库创建的类型
14 />
15 </Context>
3、通过连接池进行连接,获取连接对象
1 package com.bjsxt.servlet; 2
3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.sql.Connection; 6 import java.sql.PreparedStatement; 7 import java.sql.ResultSet; 8 import java.sql.SQLException; 9
10 import javax.naming.Context; 11 import javax.naming.InitialContext; 12 import javax.naming.NamingException; 13 import javax.servlet.ServletException; 14 import javax.servlet.annotation.WebServlet; 15 import javax.servlet.http.HttpServlet; 16 import javax.servlet.http.HttpServletRequest; 17 import javax.servlet.http.HttpServletResponse; 18 import javax.sql.DataSource; 19 @WebServlet("/test") 20 public class DemoServlet extends HttpServlet{ 21 @Override 22 protected void service(HttpServletRequest req, HttpServletResponse resp) 23 throws ServletException, IOException { 24 try { 25 Context cxt=new InitialContext(); Context是上下文接口 context.xml文件对象类型 26 DataSource ds = (DataSource) cxt.lookup("java:comp/env/test");本地数据库环境 (java:comp/env/这是固定字符串) test是自配置的连接池 27 Connection conn = ds.getConnection(); 25-27行是JNDI代码 28 PreparedStatement ps=conn.prepareStatement("select * from flower"); 29 resp.setContentType("text/html;charset=utf-8"); 30 ResultSet rs=ps.executeQuery(); 31 PrintWriter out = resp.getWriter(); 32 while(rs.next()){ 33 out.print(rs.getInt(1)+" "+rs.getString(2)); 34 } 35 out.flush(); 36 out.close(); 当关闭连接对象时,把连接对象归还给数据库连接池,把状态改变成idle 37 并不是关闭
38 } catch (NamingException e) { 39 // TODO Auto-generated catch block
40 e.printStackTrace(); 41 } catch (SQLException e) { 42 // TODO Auto-generated catch block
43 e.printStackTrace(); 44 } 45
46 } 47 }