背景:
创建数据库连接池,并交给tomcat管理
1、创建一个web项目
2、导包/建数据库
3、项目结构
4、在META-INF 文件下编写context
<?xml version="1.0" encoding="UTF-8"?>
<context>
<!-- 数据库连接池 -->
<Resource
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3307/newport" username="root"
password="password"
maxActive="50"
maxIdle="20"
name="test"
auth="Container"
maxWait="10000"
type="javax.sql.DataSource"/>
</context>
注:这个时候就可以将项目发布到tomcat了,如果没有报错说明tomcat已经产生了数据库连接池。
现在我们要做的就是怎么从tomcat中拿到数据库连接池并使用它。
5、编写测试类testservicelet
package com.pool.serverlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
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.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import com.sun.crypto.provider.RSACipher;
import javafx.css.PseudoClass;
@WebServlet("/pool")
public class testserverlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse rps) throws ServletException, IOException {
try {
Context cxt = new InitialContext();
DataSource dSource = (DataSource) cxt.lookup("java:comp/env/test");
Connection conn = dSource.getConnection();
PreparedStatement ps = conn.prepareStatement("select * from ssm");
ResultSet re = ps.executeQuery();
rps.setContentType("text/html;Charset= utf-8");
PrintWriter out = rps.getWriter();
while (re.next()) {
out.print(re.getInt(1)+"     "+re.getString(2)+"<br/>");
}
out.flush();
out.close();
out.close();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.service(req, rps);
}
}
6、实验结果: