Java小程序登录判断用户是否存在

1. 操作流程

为了实现"Java小程序登录判断用户是否存在"功能,我们可以按照以下流程进行操作:

步骤 描述
1 获取用户输入的用户名和密码
2 根据用户名查询数据库中的用户信息
3 如果查询到用户信息,则比对用户密码,如果密码匹配,登录成功;否则,登录失败
4 如果未查询到用户信息,登录失败

接下来,我们将详细介绍每个步骤需要做什么,以及需要使用的每条代码。

2. 代码实现

步骤1:获取用户输入的用户名和密码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入用户名:");
        String username = scanner.nextLine();

        System.out.print("请输入密码:");
        String password = scanner.nextLine();

        // 此处可添加输入校验逻辑,例如检查用户名和密码是否为空
    }
}

在这段代码中,我们使用Scanner类获取用户输入的用户名和密码,并存储在usernamepassword变量中。你可以根据实际需求添加输入校验逻辑,例如检查用户名和密码是否为空。

步骤2:查询数据库中的用户信息

import java.sql.*;

public class Main {
    public static void main(String[] args) {
        // 先获取连接
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");

        // 构建查询语句
        String query = "SELECT * FROM users WHERE username = ?";

        try (PreparedStatement statement = connection.prepareStatement(query)) {
            // 设置查询参数
            statement.setString(1, username);

            // 执行查询
            ResultSet resultSet = statement.executeQuery();

            // 如果查询到用户信息,继续执行下一步;否则,登录失败
            if (resultSet.next()) {
                String storedPassword = resultSet.getString("password");
                // 此处可将查询到的用户信息存储到实体类中进行后续操作
            } else {
                System.out.println("登录失败,用户不存在");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在这段代码中,我们使用JDBC连接数据库,并使用PreparedStatement对象执行查询语句。需要替换的部分包括:

  • 数据库连接URL:jdbc:mysql://localhost:3306/mydatabase,请将localhost:3306/mydatabase替换为你的数据库地址和名称。
  • 用户名和密码:"username", "password",请将usernamepassword替换为你的数据库用户名和密码。

步骤3:比对用户密码

import java.sql.*;
import org.apache.commons.codec.digest.DigestUtils;

public class Main {
    public static void main(String[] args) {
        // 先获取连接
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");

        // 构建查询语句
        String query = "SELECT * FROM users WHERE username = ?";

        try (PreparedStatement statement = connection.prepareStatement(query)) {
            // 设置查询参数
            statement.setString(1, username);

            // 执行查询
            ResultSet resultSet = statement.executeQuery();

            // 如果查询到用户信息,继续执行下一步;否则,登录失败
            if (resultSet.next()) {
                String storedPassword = resultSet.getString("password");

                // 对输入的密码进行加密
                String encryptedPassword = DigestUtils.sha256Hex(password);

                // 比对加密后的密码和数据库中存储的密码
                if (storedPassword.equals(encryptedPassword)) {
                    System.out.println("登录成功");
                } else {
                    System.out.println("登录失败,密码不正确");
                }
            } else {
                System.out.println("登录失败,用户不存在");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在这段代码中,我们使用了Apache Commons Codec库中的DigestUtils类对用户输入的密码进行SHA256加密,并与数据库中存储的密码进行比对。

请确保你的项目中包含了Apache Commons Codec库的依赖,例如在Maven项目的pom.xml文件中添加以下依赖:

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency