我目前正在登录页面,我需要通过比较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()方法只返回&#34;无效&#34;。
我认为我的initializeSet方法有问题。有人可以证实这一点吗?
任何帮助将不胜感激。谢谢!
答案 0 :(得分:3)
你的User
课程错了。
public String getPassword() {
return username;
}
此方法应返回密码,而不是用户名。
当看到正确的用户名时,它会将密码与getPassword()
返回的密码进行比较。但这不是密码,因此它会转移给下一个用户。
下一个用户不正确,因此将用户名设置为“无效”。
首先要纠正这种方法。此外,如果您匹配正确的用户,始终停止循环,无论密码是否正确。继续将用户与列表的其余部分相匹配是没有意义的。