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技术站