Java 使用JDBC和JSP进行登录身份验证:如何检查数据库中是否存在用户输入的用户名和密码?

Java 使用JDBC和JSP进行登录身份验证:如何检查数据库中是否存在用户输入的用户名和密码?,java,html,jsp,authentication,jdbc,Java,Html,Jsp,Authentication,Jdbc,在JSP下,JDBC连接成功后,ResultSet显示了一些值 如何检查用户在文本字段(使用HTML表单)中输入的登录值(用户名和密码)是否正确并存在于数据库中? 编辑:无论是否输入凭据,它都会显示错误的用户名和密码: if (rs.next()) { out.printf("Welcome, %s! You've successfully logged in!\n", username); } else { out.print("Incorrect username or passwo

在JSP下,JDBC连接成功后,ResultSet显示了一些值

如何检查用户在文本字段(使用HTML表单)中输入的登录值(用户名和密码)是否正确并存在于数据库中?

编辑:无论是否输入凭据,它都会显示错误的用户名和密码:

if (rs.next()) {
  out.printf("Welcome, %s! You've successfully logged in!\n", username);
} else {
  out.print("Incorrect username or password!");
}
if (username == "" || password == "") {
  out.print("<body>Username or password cannot be empty!</body>");
}
if(rs.next()){
out.printf(“欢迎,%s!您已成功登录!\n”,用户名);
}否则{
打印(“不正确的用户名或密码!”);
}
如果(用户名=“”| |密码=“”){
打印(“用户名或密码不能为空!”);
}

我假定您已经从表单中获取了密码和用户名,并且用户名和密码作为平面文本存储在数据库中。如果是这种情况,则此示例代码将帮助您:

Connection con = DriverManager.getConnection("url","username","password");
String sql = "select * from MyTable where username=? and password=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, "yourUsername");
ps.setString(2, "yourPassword");
ResultSet rs = ps.executeQuery();
if(rs.next()) {
    System.out.println("login successful");
    //code to redirect to login page
}

由于只有具有给定用户名的用户,因此如果您查询具有特定用户名和密码的记录,则如果存在这样的用户,则将得到一个结果。这可以解释为成功登录。

也发布您的代码。将此
if(username==“”| | password==“”){..}
放在您的数据库代码之前。正如@swati指出的,将该代码放在从数据库查询的上面。并将所有查询代码的代码放在else语句中。好的!我已经做了必要的更改,谢谢!它现在工作得很好。非常感谢!这很有效。但是,如果我还想给出一个“不正确的用户名或密码”错误怎么办。我试着在if中使用else,但这给了我一个错误。我很高兴能提供帮助。@arunken您不能将用户密码作为简单文本存储在DB中。它应该被散列。否则,您将破坏应用程序的安全性。请看下面的链接!但op却不是这样,他正在试图找出如何成功登录。我们不能期望他们在第一次尝试时使用加密或散列@纳扎尔_art@Aishwarya否则,代码可以正常工作。请你把代码贴出来,这样我们就可以理解错误背后的可能原因了。