Java IO 序列化流实现注册(Register)与登录(Login)
一、 准备User 类
- 属性 username 、password,属性进行私有化(private)封装
- 方法:无参构造方法和有参构造方法,Getter and Setter 方法
- User类必须实现 Serializable 接口
- Serializable 接口: 是用于启动对象的序列化功能,可以强制让指定类具备序列化功能,该接口中没有成员,是一个标记接口,这个标记接口用于给序列化类提供UID
- User.java 源码如下:
import java.io.Serializable;
public class User implements Serializable {
private String username;
private int password;
public User() { }
public User(String username, int password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
}
二、注册与登录的具体实现
- 先将User类序列化后保存到本地文件中,再反序列化User类的序列化文件,得到User类对象,调用get() 方法获得对应属性的值,使用该值和用户输入的值进行相应的逻辑判断,模拟各种登录成功和登录失败的场景
- RegisterAndLogin.java具体实现如下:
public class RegisterAndLogin {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Scanner scanner = new Scanner(System.in);
User user1 = new User("huisoul",123456);
FileOutputStream fileOutputStream = new FileOutputStream("D:/111.txt");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(user1);
objectOutputStream.flush();
objectOutputStream.close();
fileOutputStream.close();
User user2 = null;
FileInputStream fileInputStream = new FileInputStream("D:/111.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
user2 = (User) objectInputStream.readObject();
System.out.print("请输入用户名:");
String username = scanner.next();
System.out.print("请输入用户密码:");
int password = scanner.nextInt();
if(username.equals(user2.getUsername()) && password == user2.getPassword()){
System.out.println("Login Succeed");
}else if(username.equals(user2.getUsername()) && password != user2.getPassword()){
System.out.println("用户名正确,请检查用户密码");
} else if(!(username.equals(user2.getUsername())) && password == user2.getPassword()){
System.out.println("用户密码正确,请检查用户名");
}else {
System.out.println("请检查用户名和用户密码");
}
objectInputStream.close();
fileInputStream.close();
}
}