【Java】数据库连接池的简单使用

一、本地数据库连接池使用

1、 配置全局(在本地tomcat配置)

a. 打开tomcat/conf/context.xml文件添加如下配置

	<!-- JNDI tomcat 数据库连接池配置 -->
	<Resource
		name="db"
		auth="Container"
		maxActive="100"
		maxIdle="30"
		maxWait="10000"
		type="javax.sql.DataSource"
		username="root"
		password="root"
		driverClassName="com.mysql.cj.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/db?serverTimezone=PRC" 
	/>

 

属性名称

说明

name

指定Resource的JNDI名称

auth

指定管理Resource的Manager(Container:由容器创建和管理|Application:由Web应用创建和管理)

type

指定Resource所属的Java类 javax.sql.DataSource

maxActive

指定连接池中处于活动状态的数据库连接的最大数目

maxIdle

指定连接池中处于空闲状态的数据库连接的最大数目

maxWait

指定连接池中的连接处于空闲的最长时间,超过这个时间会抛出异常,取值为-1,表示可以无限期等待

 

b. 使用数据源,在web中测试(即获取context.xml文件配置)

<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>title</title>
</head>
<body>
  <%
      Context ctx = new InitialContext();
      DataSource ds = (DataSource)ctx.lookup("java:comp/env/db");
      Connection conn = ds.getConnection();
      out.print(conn);
      Statement stmt = conn.createStatement();
      ResultSet rs = stmt.executeQuery("select version()");
      rs.next();
      out.print(rs.getString(1));
      rs.close();
      stmt.close();
  %>
</body>
</html>

2、 在web项目中使用(不使用全局)

a. 首先注释写在tomcat/conf/context.xml数据库连接池配置,在web项目下的webapp目录下初建一个META-INF目录,然后再在META-INF目录下创建一个context.xml文件,写入如下内容

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!-- 默认的连接池 -->
    <Resource
            name="db"
            auth="Container"
            maxActive="100"
            maxIdle="30"
            maxWait="10000"
            type="javax.sql.DataSource"
            username="root"
            password="root"
            driverClassName="com.mysql.cj.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/db?serverTimezone=PRC"
    />
</Context>

b. 继续用之前的web代码测试即可

 

二、阿里数据库连接池使用(和上面的使用几乎一样,只有连接池的配置发生改变)

a. 在web项目下的META-INF/context.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!-- 默认的连接池 -->
    <Resource
            name="db"
            auth="Container"
            maxActive="100"
            maxIdle="30"
            maxWait="10000"
            type="javax.sql.DataSource"
            username="root"
            password="root"
            driverClassName="com.mysql.cj.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/db?serverTimezone=PRC"
    />
    
    <!-- 阿里连接池 -->
    <Resource
            name="druid"
            auth="Container"
            factory="com.alibaba.druid.pool.DruidDataSourceFactory"
            type="javax.sql.DataSource"
            username="root"
            password="root"
            driverClassName="com.mysql.cj.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/db?serverTimezone=PRC"
            filters="stat"
    />
</Context>

b. 也可以使用全局配置,同样也是在tomcat/conf/context.xml配置

c. 连接池测试

<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>title</title>
</head>
<body>
  <%
      Context ctx = new InitialContext();
      DataSource ds = (DataSource)ctx.lookup("java:comp/env/druid");
      Connection conn = ds.getConnection();
      out.print(conn);
  %>
</body>
</html>

  

三、Druid监控统计

a. 只需在WEB-INF/web.xml添加配置即可

    <!-- Druid监控统计 -->
    <servlet>
        <servlet-name>druidr</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>

<!--        <init-param>-->
<!--            <!– 是否清空统计数据 –>-->
<!--            <param-name>resetEnable</param-name>-->
<!--            <param-value>true</param-value>-->
<!--        </init-param>-->
        <init-param>
            <!-- 用户名 -->
            <param-name>loginUsername</param-name>
            <param-value>admin</param-value>
        </init-param>
        <init-param>
            <!-- 密码 -->
            <param-name>loginPassword</param-name>
            <param-value>admin</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>druidr</servlet-name>
        <url-pattern>/druid/*</url-pattern>
    </servlet-mapping>

b.当在网页中执行数据库操作时都可以查看到,因为我使用的是本机、端口为8080、tomcat根目录为空,我直接输入loaclhost:8080/druid,即可看到druid统计监控,输入先前设好的账号密码即可,效果如下

 

 

 

posted @ 2020-11-26 09:00  敲代码的阿磊  阅读(377)  评论(0编辑  收藏  举报