简单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&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;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【版本低使用这个】

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐