我目前正在开发一个登录页面,我需要通过将 ArrayList 中的每个项目与输入进行比较来检查用户的输入是否有效。
这是我在 servlet 中实现它的方法
public class UserLogin extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
String un = request.getParameter("username");
String pw = request.getParameter("password");
UserInitializer user = new UserInitializer();
user.initializeSet();
String status = user.compare(un,pw);
System.out.println(status); //only used to check if desired output is returned.
}
}
这是我对模型类的实现
public class UserInitializer {
public static List<User> users = new ArrayList<User>();
public void initializeSet() {
users.add(new User("User1", "abcd"));
users.add(new User("User2", "wxzy"));
users.add(new User("User3", "1234"));
}
public String compare(String u, String p) {
Iterator<User> iterate = users.iterator();
int stop = 0;
String username = null;
while (iterate.hasNext() && (stop == 0)) {
User user = iterate.next();
if (user.getUsername().equals(u)) {
if (user.getPassword().equals(p)) {
username = u;
stop = 1;
}
}
else {
username = "Invalid"; //username not found
}
}
return username;
}}
我的用户类别
class User {
private String username, password;
public User(String u, String p) {
this.username = u;
this.password = p;
}
public void setUsername(String u) {
this.username = u;
}
public void setPassword(String p) {
this.password = p;
}
public String getUsername() {
return username;
}
public String getPassword() {
return username;
}}
我尝试过仅使用一个普通的 Java 项目来解决这个问题,它工作得很好,但是当我在 servlet 中实现它时,compare() 方法仅返回“无效”。
我认为我的initializeSet 方法有问题。有人可以证实这一点吗?
如有任何帮助,我们将不胜感激。谢谢!
最佳答案
您的User
类是错误的。
public String getPassword() {
return username;
}
此方法应返回密码,而不是用户名。
当它看到正确的用户名时,它会将密码与getPassword()
返回的密码进行比较。但这不是密码,因此它会转移到下一个用户。
下一个用户不正确,因此将用户名设置为“无效”。
首先要纠正该方法。另外,如果您匹配了正确的用户,无论密码是否正确,总是停止循环。继续将用户与列表的其余部分匹配是没有意义的。
关于java - 列表界面在我的 servlet 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43070968/