2012-12-14 29 views
2

我有一個簡單的例子來檢查使用MVC模式的用戶登錄..創建例如用簡單的Java MVC

LoginModel:

public class LoginModel { 
private String username; 
private String password; 

public LoginModel() 
{   
} 
/** 
* @return the username 
*/ 
public String getUsername() { 
    return username; 
} 
/** 
* @param username the username to set 
*/ 
public void setUsername(String username) { 
    this.username = username; 
} 
/** 
* @return the password 
*/ 
public String getPassword() { 
    return password; 
} 
/** 
* @param password the password to set 
*/ 
public void setPassword(String password) { 
    this.password = password; 
} 

}

LoginView:

public class LoginView { 
LoginModel user; 

//Ham khoi tao cho LoginView 
public LoginView(LoginModel user) 
{ 
    this.user=user; 
} 

public void showMessage(String msg) 
{ 
    System.out.println(msg); 
} 

public void getUserInfo() 
{ 
try 
{ 

    DataInputStream input=new DataInputStream(System.in); 
    System.out.println("Username:"); 
    user.setUsername(input.readUTF()); 
    System.out.println("Password:"); 
    user.setPassword(input.readUTF()); 
    input.close(); 
} 
catch(IOException e) 
{ 
    System.out.println(e); 
} 

} }

LoginControl:

public class LoginControl { 
LoginModel user; 
LoginView view; 

public LoginControl(LoginModel user,LoginView view) 
{ 
    this.user=user; 
    this.view=view; 
    while(true) 
    { 
    view.getUserInfo(); 
    if(checkLogin()) 
    { 
     view.showMessage("Success"); 
    } 
    else 
    { 
     view.showMessage("Wrong username or password"); 
    } 
    } 
} 

private boolean checkLogin() 
{ 
    if((user.getUsername().equals("sa"))&&(user.getPassword().equals("sa"))) 
    { 
     return true; 
    } 
    return false; 
} 

}

LoginMain:

public class LoginMVC { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 
    LoginModel user=new LoginModel(); 
    LoginView view=new LoginView(user); 
    LoginControl control=new LoginControl(user, view); 
} 

}

但是當我運行主類,這是唯一的用戶名:輸入用戶和停止.. 我不知道錯誤在哪裏。 你能幫助我嗎?

+0

是否有一個原因,你正在使用'DataInputStream'而不是'Scanner'來讀取用戶輸入? – Vulcan

+0

謝謝..我編輯。 – user1871578

+1

U可以使用Scanner而不是使用Depricated Api DataInputStream –

回答

0

我不知道爲什麼DataInputStream不工作,我建議使用ScannergetUserInfo方法獲得控制檯輸入。

Scanner scanner = new Scanner(System.in); 
    System.out.println("Username:"); 
    user.setUsername(scanner.nextLine()); 
    System.out.println("Password:"); 
    user.setPassword(scanner.nextLine()); 
    scanner.close(); 
+0

@Vulcan謝謝。你在編輯之前編輯過:-)謝謝。 – vels4j