登录页面底层逻辑原理
简介:本文讲解,登录页面网页之下,如何使用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); } }