java - 列表界面在我的 servlet 上不起作用

标签 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() 方法仅返回“无效”。

我认为我的initializeSet 方法有问题。有人可以证实这一点吗?

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

您的User类是错误的。

public String getPassword() {
    return username;
}

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

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

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

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

关于java - 列表界面在我的 servlet 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43070968/

相关文章:

java - 无法将 JTree 添加到 JInternalFrame 的 JPanel

java - 如何获取 GitHub 中某个版本的所有提交?

java - 覆盖 Tomcat 基本身份验证

servlets - servletcontext 中的 RequestDispatcher 与请求

java - url 重定向时的 session 变量

java - 为什么字符流读取的是int?

java - 在 JavaFX 中制作视频(媒体)播放器占用尽可能多的空间,但不能超过

java - 在MySql Workbench中添加DB用户或创建用户表

jsp - 在 web-app 中使用 maven 和 eclipse 时抛出异常

java - 如何获取 WAR 文件的名称?