2012-12-14 34 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