检查您的登录名和密码(Java Web、Servlets)

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16264544/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-16 06:03:56  来源:igfitidea点击:

Check your login and password (Java Web, Servlets)

javadatabaseservletsif-statement

提问by stark

I'm trying to verify that the user name and password entered in the JSP page with data from a database, all the parameters are coming, but even when matching data, the function returns false. What is my fault?

我试图用数据库中的数据验证在JSP页面中输入的用户名和密码,所有参数都来了,但即使匹配数据,该函数也返回false。我的错是什么?

Here is my code:

这是我的代码:

public class LoginService {
    public boolean loginCheck(String username, String password){
        String query;
        String dbUsername, dbPassword;
        boolean login = false;

        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/blog_u", "root", "root");
            Statement stmt = (Statement) con.createStatement();
            query = "SELECT username, password FROM user;";
            stmt.executeQuery(query);
            ResultSet rs = stmt.getResultSet();

            while(rs.next()){
                dbUsername = rs.getString("username");
                dbPassword = rs.getString("password");

                if(dbUsername == username && dbPassword == password){
                    System.out.println("OK");
                    login = true;
                }
                System.out.println(username + password + " " + dbUsername + dbPassword);
            }
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return login;
    }
}

采纳答案by Etienne Miret

if(dbUsername == username && dbPassword == password){

should change to

应该改为

if(dbUsername.equals(username) && dbPassword.equals(password)){

Strings shouldn't be compared using ==in java. See How do I compare strings in Java?.

不应==在 java 中使用字符串进行比较。请参阅如何比较 Java 中的字符串?.