ログイン登録事例——IOフロー実現
3955 ワード
ケーススタディ:IOストリームを介して登録されたデータをテキストに書き込み、ログイン時に入力ストリームを介して入力されたユーザー名、パスワードがテキストレコードと同じかどうかを検証します.
ここでは4つのバッグに分けることができます
domain-標準java記述クラス
dao-ストレージインタフェース
impl-メモリインタフェース実装クラス
text——テストクラス
domainに標準のUserクラスを書く
daoのインタフェースにはregist()とisLogin()の2つの方法があります
implではregist()とisLogin()の2つのメソッドを実装し、static修飾でデータをテキストにインポートするFileを作成します.
textクラスでメソッドテストを呼び出す;
具体的なコード:
標準Userクラス:
この登録事例は、以前に集合で実現された登録事例とほぼ同じであり、主な違いは前者が集合にデータを格納し、プログラムが再実行されると、データがなくなることである.IOストリームによって実現されるこの例では、データはテキストに格納され、プログラムが終了するとテキストの内容は依然として存在し、プログラムを再起動すると、以前に登録したユーザー名とパスワードを利用してログインすることができる.
ここでは4つのバッグに分けることができます
domain-標準java記述クラス
dao-ストレージインタフェース
impl-メモリインタフェース実装クラス
text——テストクラス
domainに標準のUserクラスを書く
daoのインタフェースにはregist()とisLogin()の2つの方法があります
implではregist()とisLogin()の2つのメソッドを実装し、static修飾でデータをテキストにインポートするFileを作成します.
textクラスでメソッドテストを呼び出す;
具体的なコード:
標準Userクラス:
public class User {
private String userName;
private String password;
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;
}
public User(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
}
インタフェース:public interface UserDao {
// , ,
public abstract void regist(User user);
public abstract boolean isLogin(String userName,String password);
}
インタフェース実装クラス:public class UserDaoImpl implements UserDao{
private static File file = new File("user.txt");
// :
static{
//
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void regist(User user) {
try {
// user , user.txt
String info = user.getUserName()+"="+user.getPassword();
BufferedWriter bw = new BufferedWriter(new FileWriter(file,true));// FileWriter
//
bw.write(info);
bw.newLine();
bw.flush();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public boolean isLogin(String userName, String password) {
/**
* 1. , user.txt
* 2.
* 3.
* 4. , flag
*/
boolean flag = false;
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine())!=null) {
String[] strings = line.split("=");
if (userName.equals(strings[0])&&password.equals(strings[1])) {
//
flag = true;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
}
テストクラス:public class Test {
public static void main(String[] args) {
UserDaoImpl udi = new UserDaoImpl();
while (true) {
System.out.println("----- ------");
System.out.println("1: ");
System.out.println("2: ");
System.out.println("3: ");
//
Scanner sc = new Scanner(System.in);
String chioce = sc.nextLine();
switch (chioce) {
case "1":
System.out.println(" ");
System.out.println(" ");
String userName = sc.nextLine();
System.out.println(" ");
String password = sc.nextLine();
User user = new User(userName, password);
udi.regist(user);
System.out.println(" ");
break;
case "2":
System.out.println(" ");
System.out.println(" ");
String inputUserName = sc.nextLine();
System.out.println(" ");
String inputPassword = sc.nextLine();
boolean login = udi.isLogin(inputUserName, inputPassword);
if (login) {
System.out.println(" ");
}else {
System.out.println(" ");
}
break;
case "3":
default:
System.exit(0);
break;
}
}
}
}
この登録事例は、以前に集合で実現された登録事例とほぼ同じであり、主な違いは前者が集合にデータを格納し、プログラムが再実行されると、データがなくなることである.IOストリームによって実現されるこの例では、データはテキストに格納され、プログラムが終了するとテキストの内容は依然として存在し、プログラムを再起動すると、以前に登録したユーザー名とパスワードを利用してログインすることができる.