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日

相关文章

  • JAVA如何调用wsdl过程详解

    在JAVA中调用WSDL过程需要使用SOAP协议,以实现在网络间的交互。 以下是JAVA调用WSDL过程的详细攻略: 1. 导入WSDL文件 首先需要导入WSDL文件,可以使用JAVA的wsimport工具实现自动生成JAVA代码。在命令行中进入wsimport所在文件夹,输入以下命令: wsimport <WSDL地址> 实际执行时,可以将替换…

    Java 2023年5月26日
    00
  • 解决Spring Security 用户帐号已被锁定问题

    解决Spring Security 用户帐号已被锁定问题的完整攻略如下: 问题背景 在使用 Spring Security 进行身份认证和授权的过程中,有时候会遇到用户帐号被锁定的情况。这个问题的表现为用户尝试登录多次失败后,登录会变得不可用,用户无法再次进行登录操作。 解决方案 针对这个问题,有以下两种解决方案: 方案一:解锁用户帐号 对于帐号被锁定的情况…

    Java 2023年5月19日
    00
  • java中Servlet监听器的工作原理及示例详解

    下面我为你详细讲解“Java中Servlet监听器的工作原理及示例详解”的攻略。 1. Servlet监听器的概述 Servlet监听器,是Servlet API中提供的,用于监听Servlet请求和响应生命周期的组件。Servlet监听器通过绑定到Servlet相关的事件,去观察和响应Servlet容器的实践,对于多种应用场景和实现方式均提供了相应的使用解…

    Java 2023年6月15日
    00
  • SpringBoot使用freemarker导出word文件方法详解

    SpringBoot使用freemarker导出word文件方法详解 在SpringBoot框架中,使用freemarker库可以轻松地将数据和模板结合起来生成各种文件类型。其中,导出word文件是一个常见的需求,本文将详细介绍SpringBoot如何使用freemarker导出word文件。 步骤一:添加依赖 首先,在pom.xml文件中添加freemar…

    Java 2023年5月20日
    00
  • turn.js异步加载实现翻书效果

    下面是使用turn.js异步加载实现翻书效果的完整攻略: 1. 引入turn.js 首先,需要在HTML文件中引入turn.js文件和其依赖的jQuery库。可以在turn.js官网下载代码。 <!– 引入jQuery库 –> <script src="https://ajax.googleapis.com/ajax/libs…

    Java 2023年6月15日
    00
  • Eolink上传文件到Java后台进行处理的示例代码

    下面我将详细讲解“Eolink上传文件到Java后台进行处理的示例代码”的完整攻略,包括代码示例和说明。 环境准备 首先,需要安装好JDK和Maven。具体的安装步骤可以自行查看相关的教程。 接着,需要新建一个Maven项目,并添加相关的依赖。在pom.xml文件中,添加以下依赖: <dependencies> <dependency&gt…

    Java 2023年6月1日
    00
  • jQuery 浮动广告实现代码

    下面是详细讲解“jQuery 浮动广告实现代码”的完整攻略。 概述 在网页设计中,广告是常见的一种元素,而浮动广告就是其中比较常见的一种类型。浮动广告指的是在网页中随着用户的滚动而浮动的广告。在这里,我们介绍一种使用 jQuery 实现浮动广告的方法。 实现步骤 步骤1:编写 HTML 结构 首先我们需要编写 HTML 结构,用来容纳我们的广告。在 HTML…

    Java 2023年6月15日
    00
  • SpringBoot使用JWT实现登录验证的方法示例

    以下是“SpringBoot使用JWT实现登录验证的方法示例”的完整攻略: 1. 什么是JWT? JWT(JSON Web Token)是由JSON生成的令牌,通常用于身份验证和授权。它是一个开放标准(RFC 7519),通过在不同方之间安全地传输声明来作为JSON Web签名(JWS)或JSON Web加密(JWE)的方式。在Spring Boot中使用J…

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