java jsp if 语句
java jsp if statement
下面的代码让我很头疼。为什么我的 if
忽略了 rs.next() == true
?
System.out.println(rs.next());
if (rs.next() == true) {
System.out.println("1");
session.setAttribute("userid", userid);
//out.println("welcome " + userid);
//out.println("<a href='logout.jsp'>Log out</a>");
response.sendRedirect("success.jsp");
} else {
System.out.println("2");
out.println("Invalid password <a href='index.jsp'>try again</a>");
}
控制台:
#1 SELECT * FROM users where username = 'test' and password = 'test'
#2 true
#3 2
我哪里做错了?
What am I doing here wrong?
您正在呼叫 next()
两次。第一次调用 returns true
,但大概是第二次调用 returns false
- 这是有道理的,如果您的查询只有 returns 一个结果。
如果您真的想打印出该值以用于诊断目的,请将其保存在局部变量中:
boolean nextResult = rs.next();
System.out.println(nextResult);
if (nextResult) {
...
} else {
...
}
调用ResultSet#next()
推进底层游标。假设用户名确实是唯一的,如果找到,第一次调用 next()
将 return true
并前进光标。当第二次调用时,游标已经耗尽了它的所有数据,所以它 returns false
。如果你想使用这个值,你需要保留它而不是多次调用next()
。例如:
boolean hasNext = rs.next();
System.out.println(hasNext);
if (hasNext) {
// Do stuff...
我没有完全理解你的问题,但首先我们不应该写这样的 if 语句
if (rs.next() == true) {
这样检查是错误的做法if(boolVar == true)
应该是这样
if(boolVar){
下面的代码让我很头疼。为什么我的 if
忽略了 rs.next() == true
?
System.out.println(rs.next());
if (rs.next() == true) {
System.out.println("1");
session.setAttribute("userid", userid);
//out.println("welcome " + userid);
//out.println("<a href='logout.jsp'>Log out</a>");
response.sendRedirect("success.jsp");
} else {
System.out.println("2");
out.println("Invalid password <a href='index.jsp'>try again</a>");
}
控制台:
#1 SELECT * FROM users where username = 'test' and password = 'test'
#2 true
#3 2
我哪里做错了?
What am I doing here wrong?
您正在呼叫 next()
两次。第一次调用 returns true
,但大概是第二次调用 returns false
- 这是有道理的,如果您的查询只有 returns 一个结果。
如果您真的想打印出该值以用于诊断目的,请将其保存在局部变量中:
boolean nextResult = rs.next();
System.out.println(nextResult);
if (nextResult) {
...
} else {
...
}
调用ResultSet#next()
推进底层游标。假设用户名确实是唯一的,如果找到,第一次调用 next()
将 return true
并前进光标。当第二次调用时,游标已经耗尽了它的所有数据,所以它 returns false
。如果你想使用这个值,你需要保留它而不是多次调用next()
。例如:
boolean hasNext = rs.next();
System.out.println(hasNext);
if (hasNext) {
// Do stuff...
我没有完全理解你的问题,但首先我们不应该写这样的 if 语句
if (rs.next() == true) {
这样检查是错误的做法if(boolVar == true)
应该是这样
if(boolVar){