检查您的登录名和密码(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
Check your login and password (Java Web, Servlets)
提问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 中的字符串?.