登录页面JDBC案例

简介: 登录页面JDBC案例

登录页面底层逻辑原理

简介:本文讲解,登录页面网页之下,如何使用java来设计账号的登录,与账号的注册的底层实现。

文件结构

User类

package com.study;
public class User {
    private String username;
    private String password;
    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
    public User() {
    }
    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;
    }
}

druid.properties配置文件

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/db?serverTimezone=GMT%2B8&useOldAliasMetadataBehavior=true
username=root
password=12345
# ???????
initialSize=5
# ?????
maxActive=10
# ??????
maxWait=3000

Login

package com.study;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.Scanner;
public class Login {
    // 查询所有用户
    public static ArrayList<User> SelectAll(Connection conn) throws Exception {
        //2. 定义SQL
        String sql = "select * from users;";
        //3. 获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        //4. 设置参数
        //5. 执行SQL
        ResultSet rs = pstmt.executeQuery();
        //6. 处理结果 List<User> 封装User对象,装载List集合
        User user = null;
        ArrayList<User> users = new ArrayList<>();
        while (rs.next()){
            // 获取数据
            String username = rs.getString("username");
            String userpwd = rs.getString("userpwd");
//            System.out.println(username + " " + userpwd);
            users.add(new User(username, userpwd)); // 每次都需要创建一个新对象
            // 不然就是浅拷贝了 会导致每次的数据一样的
        }
//         System.out.println(users);
//        System.out.println(users.size());
        //7. 释放资源
        rs.close();
        pstmt.close();
        return users;
    }
    public static void Add(Connection conn, User user) throws Exception {
        // 接收页面提交的参数
        String username = user.getUsername();
        String password = user.getPassword();
        //2. 定义SQL
        String sql = "insert into users(username, userpwd) values(?,?);";
        //3. 获取pstmt对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        //4. 设置参数
        pstmt.setString(1,username);
        pstmt.setString(2,password);
        //5. 执行SQL
        int count = pstmt.executeUpdate(); // 影响的行数
        //6. 处理结果
        System.out.println(count > 0);
        //7. 释放资源
        pstmt.close();
    }
    public static void main(String[] args) throws Exception{
        Properties prop = new Properties();
        prop.load(new FileInputStream("src/druid.properties"));
        //4. 获取连接池对象
        DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
        //5. 获取数据库连接 Connection
        Connection conn = dataSource.getConnection();
        ArrayList<User> users = SelectAll(conn);
        boolean flag = false; // 判断是否登录成功
        System.out.println("首先演示登录");
        Scanner in = new Scanner(System.in);
        System.out.print("请输入你的账号:");
        String username = in.nextLine();
//        System.out.println(username);
        System.out.print("请输入你的密码:");
        String password = in.nextLine();
//        System.out.println(password);
        for (int i = 0; i < users.size(); i++) {
            User user = users.get(i);
//            System.out.println(user.getUsername() + " " + user.getPassword());
            if (username.equals(user.getUsername()) && password.equals(user.getPassword())){
                System.out.println("登录成功");
                flag = true;
                break;
            }
        }
        if (flag == false){
            System.out.println("登录失败");
        }
        System.out.println("现在演示注册");
        System.out.print("请输入你的新账号:");
        username = in.nextLine();
        System.out.print("请输入你的新密码:");
        password = in.nextLine();
        User user = new User(username, password);
        Add(conn, user);
    }
}
相关文章
|
1月前
|
Java 关系型数据库 MySQL
【JVM】JDBC案例打破双亲委派机制
【JVM】JDBC案例打破双亲委派机制
28 4
|
4天前
|
SQL 前端开发 Java
2024考古之还在用原始JDBC开发 手搓 案例 实现一个模块的增删改
2024考古之还在用原始JDBC开发 手搓 案例 实现一个模块的增删改
7 0
|
1月前
|
SQL Java 关系型数据库
JDBC PreparedStatement 字段值为null导致TBase带宽飙升的案例分析
JDBC PreparedStatement 字段值为null导致TBase带宽飙升的案例分析
65 0
|
1月前
|
SQL Java 数据库连接
JDBC增删改查案例讲解
JDBC增删改查案例讲解
25 0
|
8月前
|
Oracle 关系型数据库 Java
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例
|
Java 关系型数据库 MySQL
Java Web实战 | JDBC案例:实现图书管理
在项目开发中,应用程序需要的数据基本都是存放在数据库中的。对数据的管理过程离不开数据库。本文将运用JDBC API编写一个实现基本数据库操作(添加、修改、删除、查询)的应用程序,实现对图书信息的管理。 完成此项目的具体步骤如下。
265 0
Java Web实战 | JDBC案例:实现图书管理
|
监控 Java Spring
Spring JDBC-实施Spring AOP事务注意事项及案例分析
Spring JDBC-实施Spring AOP事务注意事项及案例分析
118 0
|
SQL 安全 Oracle
|
Java 数据库连接 数据库
|
SQL Oracle Java
Jdbc连接Oracle数据库详细案例,占位符的使用
Jdbc连接Oracle数据库详细案例,占位符的使用
283 0
Jdbc连接Oracle数据库详细案例,占位符的使用