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连接池配置的完整攻略,希望能够对你有所帮助。

阅读剩余 77%

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

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

相关文章

  • 做Java开发如何月薪达到两万,需要什么技术水平

    如何成为月薪达到两万的Java开发攻略 作为Java开发工程师,月薪达到两万并不是难事。关键在于具备足够的技术水平和项目经验。下面是我们总结的攻略。 技能和技术水平 1. 扎实的Java基础 Java开发基础是成为优秀Java开发人员的重要基础。在掌握掌握Java基础语法、多线程、集合框架、IO/NIO、反射、注解、Lambda、Stream等知识的基础上,…

    Java 2023年5月26日
    00
  • Java实现FTP文件的上传和下载功能的实例代码

    首先我们来讲解一下如何使用Java实现FTP文件的上传和下载功能。 原理分析 FTP(File Transfer Protocol)是一种用于文件传输的协议,在本地与远程主机之间传输文件。Java中通过FTPClient类来实现FTP文件的上传和下载功能。FTPClient类是org.apache.commons.net.ftp.FTPClient类库中的一…

    Java 2023年5月19日
    00
  • SpringSecurity添加图形验证码认证实现

    下面我来为你讲解SpringSecurity添加图形验证码认证实现的完整攻略。 1. 引入依赖 在pom.xml文件中添加以下依赖: <!–验证码依赖–> <dependency> <groupId>com.github.axolo</groupId> <artifactId>image-ver…

    Java 2023年5月20日
    00
  • Java中replace、replaceAll和replaceFirst函数的用法小结

    Java中replace、replaceAll和replaceFirst函数的用法小结 在Java编程中,字符串操作是很常见的,而替换字符串是其中常用的操作之一。Java提供了三种函数用于替换字符串:replace、replaceAll和replaceFirst。这篇文章将为您详细介绍它们的用法。 replace函数 replace函数接收两个参数,用于将原…

    Java 2023年5月26日
    00
  • springboot 整合canal实现示例解析

    下面我将详细讲解“springboot 整合canal实现示例解析”的完整攻略。 1. 环境准备 首先需要准备相关的环境,包括MySQL、canal和Java开发环境。其中,canal是阿里的开源项目,用于实现MySQL的增量日志同步。 2. MySQL配置 接下来需要配置MySQL,将数据表名、列名、记录内容都存储到binary log中。这可以通过在My…

    Java 2023年6月2日
    00
  • Java如何实现读取txt文件内容并生成Word文档

    要实现Java读取txt文件内容并生成Word文档,你需要以下步骤: 步骤一:读取txt文件内容 创建一个File对象,用于表示要读取的txt文件; 创建一个BufferedReader对象,用于读取文件内容; 使用BufferedReader的readLine()方法逐行读取文件内容,把每一行的文本保存到一个字符串变量中。 以下是示例代码: File fi…

    Java 2023年5月19日
    00
  • Sql中将datetime转换成字符串的方法(CONVERT)

    当从数据库中查询时间信息时,不少时候需要将datetime格式的时间转换为字符串格式。在SQL Server中,我们可以使用CONVERT函数实现该功能。 1. CONVERT函数基本语法 CONVERT(data_type(length), expression, style) 其中,data_type,length参数表示想要转换成的目标数据类型及其长度…

    Java 2023年5月19日
    00
  • Java使用反射操作数组示例

    Java反射是在程序运行时可以动态获取类的信息并操作类的属性、方法和构造器。在Java中,数组是一种特殊类型的对象,因此也可以使用反射操作数组。本文将讲述如何使用Java反射操作数组,包括获取数组信息、读取/修改数组元素、创建新数组等。 获取数组信息 要对数组进行反射操作,首先需要获取数组对象的所有信息,常用的方法有以下两种: // 获取数组类型 Strin…

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