我正在尝试创建一个需要登录的小型客户机/服务器聊天应用程序。我已经做了3个散列Map,一个用于现有用户,一个用于管理,一个用于注册用户。我可以使用预先存在的用户登录,也可以使用管理员用户登录,但无法使用已注册用户的详细信息登录。我怎么能解决这个问题,因为我已经尝试了一些方法,但似乎没有工作?
注册的用户进入一个hashmap,这个hashmap位于一个公共可访问的类中,我可以向该hashmap添加新用户,但是我无法获得log按钮来检查该hashmap。
包含Map的类
public class map {
public static HashMap<String, String> usermap = new HashMap<>();
public HashMap<String, String> getUsers()
{
return usermap;
}
}
登录按钮
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
String username = userText.getText();
String password = passwordText.getText();
Component frame = null;
//Create a map for users where put username as key and password as value
Map<String, String> usersMap = new HashMap<>();
usersMap.put("user1", "password1");
usersMap.put("user2", "password2");
//Create a map for the admin where put username as key and password as value
Map<String, String> adminMap = new HashMap<>();
adminMap.put("Admin", "password");
// Implement your authentication
if(usersMap.get(username) != null){
JOptionPane.showMessageDialog(frame, "You are successfully logged in!");
setVisible(false); //you can't see me!
dispose(); //Destroy the JFrame object
chatClient second = new chatClient();
second.setVisible(true); //displays the client page
} else if (adminMap.get(username) != null){
JOptionPane.showMessageDialog(frame, "You are successfully logged in!");
setVisible(false); //you can't see me!
dispose(); //Destroy the JFrame object
chatServer third = new chatServer();
third.setVisible(true); //displays the server page
} else if (map.usermap.equals(username,password)){
JOptionPane.showMessageDialog(frame, "You are successfully logged in!");
setVisible(false); //you can't see me!
dispose(); //Destroy the JFrame object
chatServer third = new chatServer();
third.setVisible(true); //displays the server page
}else {
success.setText("Invalid username or password entered");
}
}
1条答案
按热度按时间c6ubokkw1#
正如在评论中所讨论的,一个更清晰的问题建模方法是:
实际上,让一个Map按用户名查找密码的唯一原因是,如果您将有很多用户,或者每秒要查找很多次。如果你想要那张Map,那么它看起来像:
你的代码会变成: