怎么在监听器中用德鲁伊写一个数据库连接的功能然后在Userdao中调取方法获取连接
在Java Web项目中使用Druid连接池来实现数据库连接功能,可以按照以下步骤进行操作:
- 首先,添加Druid依赖到项目的pom.xml文件中:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.4</version>
</dependency>
- 创建一个Druid连接池的监听器类(例如:DruidListener),并实现ServletContextListener接口。
import com.alibaba.druid.pool.DruidDataSource;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.sql.Connection;
import java.sql.SQLException;
@WebListener
public class DruidListener implements ServletContextListener {
private DruidDataSource dataSource;
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
// 初始化Druid连接池
dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/your_database_name");
dataSource.setUsername("your_username");
dataSource.setPassword("your_password");
// 设置连接池参数
dataSource.setInitialSize(5); // 初始连接数
dataSource.setMinIdle(1); // 最小空闲连接数
dataSource.setMaxActive(20); // 最大活跃连接数
dataSource.setMaxWait(60000); // 获取连接的最大等待时间,单位:毫秒
// 将DataSource对象保存到ServletContext中,在整个Web应用中都可以获取到
servletContextEvent.getServletContext().setAttribute("dataSource", dataSource);
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
// 关闭Druid连接池
dataSource.close();
}
// 获取数据库连接
public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}
- 在web.xml文件中配置DruidListener监听器。
<listener>
<listener-class>com.example.DruidListener</listener-class>
</listener>
- 在UserDao类中调用getConnection方法获取数据库连接。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao {
public User getUserById(int id) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
User user = null;
try {
// 获取数据库连接
connection = DruidListener.getConnection();
// 执行查询操作
String sql = "SELECT * FROM user WHERE id = ?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
resultSet = preparedStatement.executeQuery();
// 处理查询结果
if (resultSet.next()) {
user = new User();
user.setId(resultSet.getInt("id"));
user.setName(resultSet.getString("name"));
// ...
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (resultSet != null) resultSet.close();
if (preparedStatement != null) preparedStatement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
}
通过以上步骤,你可以在监听器中用Druid实现数据库连接功能,并在UserDao中调用getConnection方法获取数据库连接
原文地址: https://www.cveoy.top/t/topic/iBJE 著作权归作者所有。请勿转载和采集!