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 }