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
类获取用户输入的用户名和密码,并存储在username
和password
变量中。你可以根据实际需求添加输入校验逻辑,例如检查用户名和密码是否为空。
步骤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"
,请将username
和password
替换为你的数据库用户名和密码。
步骤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