列表界面不能在我的servlet上运行

时间:2017-03-28 13:29:28

标签: java servlets

我目前正在登录页面,我需要通过比较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方法有问题。有人可以证实这一点吗?

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:3)

你的User课程错了。

public String getPassword() {
    return username;
}

此方法应返回密码,而不是用户名。

当看到正确的用户名时,它会将密码与getPassword()返回的密码进行比较。但这不是密码,因此它会转移给下一个用户。

下一个用户不正确,因此将用户名设置为“无效”。

首先要纠正这种方法。此外,如果您匹配正确的用户,始终停止循环,无论密码是否正确。继续将用户与列表的其余部分相匹配是没有意义的。