所以我在JSP中有一个简单的登录表单连接到数据库并检查用户是否在表中
检查时,要么在网页上打印
欢迎+用户
否则会打印无效密码再试一次
问题是它永远不会打印无效密码再次尝试它只是一个空白页
它会打印欢迎+用户如果他们在表中我似乎无法弄清楚为什么它只有那些一半的声明
它的问题简单,但我无法弄清楚
<body>
<%@ page import ="java.sql.*" %><%@ page import ="javax.sql.*" %><%String user = request.getParameter("userid");
session.putValue("userid", user);
String pwd = request.getParameter("pwd");
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8081/socusers", "root", "");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from users where user_id='" + user + "'");
if (rs.next()) {
if (rs.getString(2).equals(pwd)) {
out.println("welcome " + user);
} else {
out.println("Invalid password try again");
}
}
%>
</body>
答案 0 :(得分:1)
您的问题是因为您的查询没有返回任何内容,因此您永远不会输入其他内容,因为如果if (rs.next()) {
我没有输入第一个,请尝试在时添加其他内容,用户确实存在,但密码错误!你会看到它打印出你的错误。
类似的东西:
String message = "";
if (rs.next()) {
if (rs.getString(2).equals(pwd)) {
message = "welcome " + user;
} else {
message = "Invalid password try again";
}
}else{
message = "Invalid user try again";
}
out.println(message);
另外,请考虑使用select而不是星号的表列。如果有人更改了该表(例如列顺序),您的系统将会中断。