简介:本文讲解,登录页面网页之下,如何使用java来设计账号的登录,与账号的注册的底层实现。
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;
}
}
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
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);
}
}