JSP Spring中Druid连接池配置详解

JSP Spring中Druid连接池配置详解,以下是完整攻略:

一、什么是Druid连接池

Druid连接池是阿里巴巴开发的一款数据库连接池,性能强大,并且具有完善的监控功能。在JSP Spring中使用Druid连接池可以有效地提高数据库连接的效率,降低连接的等待时间。

二、Druid连接池的配置

在使用Druid连接池之前,需要进行一系列的配置。

1.导入依赖

在使用Druid连接池之前,需要在pom.xml文件中通过Maven导入Druid连接池的依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.12</version>
</dependency>

2.在配置文件中配置连接池信息

在Spring的配置文件中,需要添加如下配置:

<!-- 配置数据源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <!--基本属性 url、user、password -->
    <property name="url" value="jdbc:mysql://localhost:3306/test" />
    <property name="username" value="root" />
    <property name="password" value="123456" />

    <!-- 配置连接池大小 -->
    <property name="initialSize" value="5" />
    <property name="minIdle" value="5" />
    <property name="maxActive" value="20" />

    <!-- 配置获取连接等待超时的时间 -->
    <property name="maxWait" value="60000" />

    <!-- 配置监控统计拦截的filters -->
    <property name="filters" value="stat" />

    <!-- 配置测试连接有效性的sql -->
    <property name="validationQuery" value="select 'x'" />
</bean>

在上述配置中,我们设置了连接池的基本属性,包括使用的数据库URL、用户名和密码。我们还设置了连接池的大小、获取连接等待超时的时间、监控统计拦截器和测试连接有效性的SQL语句。

3. 配置过滤器

在web.xml中配置过滤器:

<!-- Druid数据源状态监控 -->
<filter>
    <filter-name>DruidWebStatFilter</filter-name>
    <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
    <init-param>
        <!-- 当前的监控地址为http://localhost:${server.port}/druid -->
        <param-name>exclusions</param-name>
        <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>DruidWebStatFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

在上述配置中,我们定义了Druid连接池状态监控过滤器的地址。

三、使用Druid连接池

在完成以上配置后,就可以使用Druid连接池来获取连接,具体方法如下:

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class UserDao {
    @Autowired
    private DataSource dataSource;

    public void test() throws SQLException {
        Connection conn = dataSource.getConnection();
        PreparedStatement ps = conn.prepareStatement("select * from user");
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            System.out.println(rs.getObject(1));
        }
        rs.close();
        ps.close();
        conn.close();
    }
}

在上述代码中,我们通过@Autowired注解注入了Druid连接池数据源,然后通过getConnection()方法获取连接,使用完毕后需要关闭连接。

四、示例说明

下面是一个简单的创建用户的例子:

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class UserDao {
    @Autowired
    private DataSource dataSource;

    public void addUser(String userName, String password) throws SQLException {
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = dataSource.getConnection();
            conn.setAutoCommit(false);
            ps = conn.prepareStatement("INSERT INTO user (userName,password) VALUES (?, ?)");
            ps.setString(1, userName);
            ps.setString(2, password);
            int rows = ps.executeUpdate();
            conn.commit();
        } catch (SQLException e) {
            conn.rollback();
        } finally {
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }
}

在上述代码中我们使用了Druid连接池,并通过getConnection()方法获取了连接。我们通过一个事务向用户表中插入数据,然后在finally块中关闭连接,并提交或者回滚事务。

另一个示例是一个查询用户的例子:

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class UserDao {
    @Autowired
    private DataSource dataSource;

    public User getUserById(int userId) throws SQLException {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = dataSource.getConnection();
            ps = conn.prepareStatement("SELECT * FROM user WHERE userId=?");
            ps.setInt(1, userId);
            rs = ps.executeQuery();
            if (rs.next()) {
                User user = new User();
                user.setUserName(rs.getString("userName"));
                user.setPassword(rs.getString("password"));
                return user;
            } else {
                return null;
            }
        } finally {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }
}

在上述代码中,我们同样使用了Druid连接池,并通过getConnection()方法获取了连接。我们查询用户表,并将查询到的结果封装到一个User对象中返回。

以上就是关于JSP Spring中Druid连接池配置的完整攻略,希望能够对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP Spring中Druid连接池配置详解 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • springmvc集成shiro登录权限示例代码

    下面是关于SpringMVC集成Shiro登录权限的完整攻略,包含两个示例说明。 SpringMVC集成Shiro登录权限示例代码 Shiro是一个强大的Java安全框架,它提供了身份验证、授权、加密等功能。在SpringMVC中集成Shiro可以帮助我们更好地管理用户的登录和权限。在本文中,我们将介绍如何在SpringMVC中集成Shiro,并提供两个示例…

    Java 2023年5月17日
    00
  • java自动生成编号的实现(格式:yyMM+四位流水号)

    Java自动生成编号的实现,通常需要考虑到以下几个方面: 记录上一个流水号。 根据当前时间生成编号的前缀(yyMM)。 每次生成编号时自增流水号,如果流水号超出限定位数则将其归零并增加前缀的年月数。 将新编号保存在数据库中。 下面是一个完整的代码示例和实现攻略。 1. 定义实体类 首先定义一个实体类,包含自动生成编号所需的属性和setter/getter方法…

    Java 2023年5月30日
    00
  • docker-compose部署配置jenkins的详细教程

    下面是详细讲解“docker-compose部署配置jenkins的详细教程”的完整攻略,步骤如下: 1. 安装Docker和Docker Compose 首先需要安装 Docker 和 Docker Compose,可以参考官网提供的教程进行安装。 Docker安装教程:https://docs.docker.com/engine/install/ Doc…

    Java 2023年5月19日
    00
  • Java中将String类型依照某个字符分割成数组的方法

    Java 中将 String 类型按照某个字符分割成数组的方法比较简单,主要通过 String 类中的 split() 方法实现。下面是详细的攻略: 1. String 类中的 split() 方法 split() 方法能够将 String 类型的字符串根据指定字符进行拆分成一个数组,具体语法如下: public String[] split(String …

    Java 2023年5月27日
    00
  • Spring循环引用失败问题源码解析

    下面就为大家详细讲解一下“Spring循环引用失败问题源码解析”的完整攻略。 1. 问题背景 在Spring中,设置成员变量注入时,会遇到“循环引用”的问题。即,在两个类中,它们互相持有对方对象时,Spring容器初始化时会出现错误。 2. 循环引用失败原理 导致循环引用的根本原因,是Java中对象的创建流程涉及到对象的实例化和初始化。在一个Java对象实例…

    Java 2023年5月19日
    00
  • MVC使用Spring.Net应用IOC(依赖倒置)学习笔记3

    下面是关于“MVC使用Spring.Net应用IOC(依赖倒置)学习笔记3”的完整攻略,包含两个示例说明。 MVC使用Spring.Net应用IOC(依赖倒置)学习笔记3 在MVC应用程序中,依赖倒置是一个非常重要的概念。依赖倒置是指,高层模块不应该依赖于低层模块,而是应该依赖于抽象接口。这样可以使得高层模块和低层模块之间的耦合度降低,从而使得应用程序更加灵…

    Java 2023年5月17日
    00
  • Java生成随机时间的简单随机算法

    下面是关于Java生成随机时间的简单随机算法的完整攻略。 1. 生成随机时间 生成随机时间的核心是生成随机的小时、分钟、秒、毫秒等,然后将这些时间组合起来构成一个新的日期时间对象。 1.1 生成随机小时数 使用Java的Random类可以生成随机的小时数。例如: Random random = new Random(); int hour = random.…

    Java 2023年5月20日
    00
  • jQuery分页插件jquery.pagination.js使用方法解析

    jQuery分页插件jquery.pagination.js使用方法解析 什么是jquery.pagination.js jquery.pagination.js 是一个基于 jQuery 的分页插件,可以用于在网站中实现分页功能,便于用户查看大量数据。 如何使用jquery.pagination.js 引入文件 首先需要引入jquery和jquery.pa…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部