java 使用c3p0连接池连接MySQL
·
简单jsp使用c3p0连接数据库,实现登录逻辑。
访问http://localhost:8080/login.html
idea 运行 tomcat项目。
run Cinfigurations

项目结构
d:\data\day19\
├── .idea\
│ ├── .gitignore
│ ├── WEB-INF\
│ ├── artifacts\
│ │ └── day19.xml
│ ├── day19.iml
│ ├── libraries\
│ │ ├── c3p0_0_9_1_2.xml
│ │ └── mysql_connector_j_8_0_33.xml
│ ├── misc.xml
│ ├── modules.xml
│ └── workspace.xml
├── META-INF\
│ └── MANIFEST.MF
├── day19.iml
├── out\
│ ├── artifacts\
│ │ └── day19\
│ │ ├── WEB-INF\
│ │ │ ├── classes\
│ │ │ └── lib\
│ │ ├── index.jsp
│ │ └── login.html
│ └── production\
│ └── day19\
│ ├── c3p0-config.xml
│ └── com\
│ └── runchum\
├── src\
│ ├── c3p0-config.xml
│ └── com\
│ └── demo\
│ ├── dao\
│ │ ├── UserDao.java
│ │ └── impl\
│ ├── entity\
│ │ └── User.java
│ ├── service\
│ │ ├── UserService.java
│ │ └── impl\
│ ├── test\
│ │ └── UserServiceTest.java
│ ├── utils\
│ │ └── BaseDao.java
│ └── web\
│ ├── FailServlet.java
│ ├── LoginServlet.java
│ └── SuccessServlet.java
└── web\
├── WEB-INF\
│ └── lib\
│ ├── c3p0-0.9.1.2.jar
│ ├── commons-dbutils-1.4.jar
│ ├── hamcrest-core-1.3.jar
│ ├── javax.servlet.jar
│ ├── junit-4.12.jar
│ ├── mysql-connector-j-8.0.33.jar
│ └── mysql-connector-java-5.1.38.jar
├── index.jsp
└── login.html
实体类
/**
* 实体类
*/
public class User {
private int id;
/**
*
*/
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
数据库连接池
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
/**
* 获取连接池工具类
*/
public class BaseDao {
//定义一个连接池对象
private static DataSource dataSource = new ComboPooledDataSource();
//获取一个连接池对象
public static DataSource getDataSource(){
return dataSource;
}
}
dao层
/**
* 数据访问对象的接口
*/
public interface UserDao {
//验证用户
public User login(User user) throws Exception;
}
import com.demo.dao.UserDao;
import com.demo.entity.User;
import com.runchum.utils.BaseDao;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
/**
* 数据访问层的实现类
*/
public class UserDaoImpl implements UserDao {
private final String LOGIN = "SELECT * FROM USER WHERE USERNAME=? AND PASSWORD=?";
@Override
public User login(User user) throws Exception{
//1、创建对象QueryRunner,并把连接池对象传入
QueryRunner queryRunner = new QueryRunner(BaseDao.getDataSource());
//2、调用QueryRunner的query方法进行查询
User loginUser = queryRunner.query(LOGIN,
new BeanHandler<User>(User.class),
user.getUsername(),
user.getPassword());
return loginUser;
}
}
service层
/**
* 业务逻辑类service的接口
*/
public interface UserService {
//验证用户
public boolean login(User user) throws Exception;
}
public class UserServiceImpl implements UserService {
//定义一个UserDaoImpl对象
private UserDao userDao = new UserDaoImpl();
@Override
public boolean login(User user) throws Exception {
return userDao.login(user)!=null ? true : false ;
}
}
web 层登录
import com.demo.entity.User;
import com.demo.service.UserService;
import com.demo.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
//1、设置编码格式
request.setCharacterEncoding("utf-8");
//2、获取username和password
String username = request.getParameter("username");
String password = request.getParameter("password");
//3、把username和password封装成一个实体类对象
User user = new User();
user.setUsername(username);
user.setPassword(password);
//4、调用业务逻辑层service
UserService userService = new UserServiceImpl();
boolean flag = userService.login(user);
/**
* 5.登录成功跳转到SuccessServlet展示:登录成功!XXX,欢迎您
* 6.登录失败跳转到FailServlet展示:登录失败,用户名或密码错误
*/
if(flag){
//成功
//存储数据
request.setAttribute("user",user);
//转发到SuccessServlet
request.getRequestDispatcher("/successServlet").forward(request,response);
}else{
//失败
//转发到FailServlet
request.getRequestDispatcher("/failServlet").forward(request,response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
登录失败
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/failServlet")
public class FailServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("登录失败,用户名或密码错误");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
登陆成功
package com.demo.web;
import com.demo.entity.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/successServlet")
public class SuccessServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//输出欢迎信息
//获取在request域中存储的用户信息
User user = (User) request.getAttribute("user");
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("登录成功!" + user.getUsername() + ",欢迎您");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
c3p0-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config>
<default-config>
<property name="user">数据库账号</property>
<property name="password">数据库密码</property>
<property name="jdbcUrl">jdbc:mysql://数据库地址/数据库名?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC</property>
<!-- 如果是新的可以采用 com.mysql.cj.jdbc.Driver -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!-- 连接池初始化的时候的连接数 -->
<property name="initialPoolSize">1</property>
<!--连接池中连接的最大个数 -->
<property name="maxPoolSize">5</property>
<!--用户获得连接Connection的时候,如果有连接就获得,没有就等待的时间,如果超时就报异常 -->
<property name="maxIdleTime">1000</property>
<!--连接池中连接的最小个数 -->
<property name="minPoolSize">5</property>
<property name="breakAfterAcquireFailure">true</property>
</default-config>
</c3p0-config>
index.jsp默认jsp首页
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
$END$
</body>
</html>
登录页
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/loginServlet" method="post">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
使用到的jar
c3p0-0.9.1.2.jar
commons-dbutils-1.4.jar
hamcrest-core-1.3.jar
javax.servlet.jar
junit-4.12.jar
mysql-connector-j-8.0.33.jar【如果mysql驱动版本比较高就使用这个】
mysql-connector-java-5.1.38.jar【版本低使用这个】
更多推荐


所有评论(0)