登录注册在项目开发中是常用的功能需求,以下使用控制台实现一个简单的登录注册功能。
实体类:
package com.csdn.entry;
public class User {
//实体类,对应一个表
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
}
数据库连接工具类:
package com.csdn.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* 建立数据库链接工具类
*/
public class DBUtil {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/csdn?serverTimezone=Asia/Shanghai","root","123456");
return connection;
}
}
登录功能实现类:
package com.csdn.service;
import com.csdn.entry.User;
import com.csdn.util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class LoginService {
private Connection connection = DBUtil.getConnection();
public static int LOGIN_NOUSER=0; //定义没有用户返回的整数常量
public static int LOGIN_ERRORPSD=1; //定义密码错误返回的常量
public static int LOGIN_SUCCESS=2; //定义登陆成功返回的常量
public LoginService() throws SQLException, ClassNotFoundException {
}
/**
* 登录操作
* @param user 传入一个user对象
* @return 返回登录后的状态常量
* @throws SQLException 抛出数据库异常
*/
public int Login(User user) throws SQLException {
//使用预查询通过username查询用户信息
String sql = "select * from Login_user where username=?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,user.getUsername());
ResultSet resultSet = statement.executeQuery();
//如果指针可以下一一条,即有一条数据,则判断密码
if(resultSet.next()){
if(user.getPassword().equals(resultSet.getString(3))){
//密码正确,返回状态码
statement.close();
connection.close();
return LOGIN_SUCCESS;
}else {
//密码错误,返回状态码
statement.close();
connection.close();
return LOGIN_ERRORPSD;
}
}else {
//没有用户返回状态码
statement.close();
connection.close();
return LOGIN_NOUSER;
}
}
}
注册功能实现类:
package com.csdn.service;
import com.csdn.entry.User;
import com.csdn.util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class RegisterService {
private Connection connection = DBUtil.getConnection();
public RegisterService() throws SQLException, ClassNotFoundException {
}
/**
* 注册方法
* @param user 传入注册的user数据
* @return 返回是否注册成功
* @throws SQLException
*/
public boolean Register(User user) throws SQLException {
//使用预查询,将user对象添加到数据表
String sql = "insert into Login_user(username,password) values(?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setObject(1,user.getUsername());
statement.setObject(2,user.getPassword());
int i = statement.executeUpdate();//获取影响的行数
//为0则注册失败,反之注册成功
if(i!=0){
statement.close();
connection.close();
return true;
}
statement.close();
connection.close();
return false;
}
}
控制台显示类:
package com.csdn.view;
import com.csdn.entry.User;
import com.csdn.service.LoginService;
import com.csdn.service.RegisterService;
import com.csdn.util.DBUtil;
import javax.sound.midi.Soundbank;
import java.sql.SQLException;
import java.util.Scanner;
public class Ctrl {
public Ctrl() throws SQLException, ClassNotFoundException {
showInfo();
}
/**
* 控制台显示操作
* @throws SQLException
* @throws ClassNotFoundException
*/
public void showInfo() throws SQLException, ClassNotFoundException {
while (true){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要操作的序号:");
System.out.println("1.登录\t2.注册\t3.退出");
String s = scanner.nextLine();
if(s.equals("1")){
login();
}else if(s.equals("2")){
register();
}else {
break;
}
}
}
/**
* 登录
* @throws SQLException
* @throws ClassNotFoundException
*/
public void login() throws SQLException, ClassNotFoundException {
LoginService lg = new LoginService();
Scanner scanner = new Scanner(System.in);
System.out.println("输入用户名:");
String uname = scanner.next();
System.out.println("输入密码:");
String pwd = scanner.next();
User user = new User();
user.setUsername(uname);
user.setPassword(pwd);
//调用登录方法
int i = lg.Login(user);
if(i==LoginService.LOGIN_ERRORPSD){
System.out.println("密码错误");
}else if(i==LoginService.LOGIN_NOUSER){
System.out.println("用户不存在");
}else if(i==LoginService.LOGIN_SUCCESS){
System.out.println("登录成功");
}
}
/**
* 注册
*/
public void register() throws SQLException, ClassNotFoundException {
RegisterService registerService = new RegisterService();
Scanner scanner = new Scanner(System.in);
System.out.println("输入用户名:");
String uname = scanner.next();
System.out.println("输入密码:");
String upwd = scanner.next();
User user = new User();
user.setUsername(uname);
user.setPassword(upwd);
//调用注册方法
boolean register = registerService.Register(user);
if(register){
System.out.println("注册成功");
}else {
System.out.println("注册失败");
}
}
}
测试类:
package com.csdn;
import com.csdn.view.Ctrl;
import java.sql.SQLException;
public class Test {
//运行入口
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Ctrl ctrl = new Ctrl();
}
}
数据库如下: