IF语句在JSP中执行错误



这是我的JSP代码,用于使用数据库获取用餐结束时间并将其与系统时间进行比较。我使用了一个if语句来查看时间是否在结束时间之前,重定向到另一个页面,但如果时间超过用餐结束时间,则显示错误。

问题是,if语句有效,但不是我刚才解释的那样。

有什么想法吗?提前感谢。。。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<%
String meal = request.getParameter("meal");
Connection con = null;
Statement st = null;
ResultSet rs = null;
try{
con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/eoms?autoReconnect=true&useSSL=false","root","eoms");
st=con.createStatement();
String select="SELECT * FROM eoms.schedule;";
rs = st.executeQuery(select);
String mealName = null;
Time dueTime = null;
Time time = null;
int found = 0;
while(rs.next()){
mealName = rs.getString(1);
dueTime = rs.getTime(3);
java.util.Date d = new java.util.Date();
time = new Time(d.getTime());
if(meal.equalsIgnoreCase(mealName) && time.before(dueTime)){
session.setAttribute("mealName", mealName);
con.close();
found = 1;
response.sendRedirect("header.jsp");
}
else
continue;
}
if(found == 0){
session.setAttribute("orderror",meal+mealName+time+dueTime+ "The time for taking the order is over...");
con.close();
response.sendRedirect("placeOrder.jsp");
}
}
catch(Exception e){
out.println(e.getMessage());
}
%>
</body>
</html>

正如注释中提到的@Andreas,在response.sendRedirect("header.jsp")之后添加break,并删除else continue;

对于其余部分,我建议使用java.time.LocalTime来获得实际时间,并使用此Time.valueOf(java.time.LocalTime.now())将其转换为java.sql.Time

用这个替换最后一个java代码

<%
String meal = request.getParameter("meal");
Connection con = null;
Statement st = null;
ResultSet rs = null;
try{
con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/eoms?autoReconnect=true&useSSL=false","root","eoms");
st=con.createStatement();
String select="SELECT * FROM eoms.schedule;";
rs = st.executeQuery(select);
String mealName = null;
Time dueTime = null;
Time time = null;
int found = 0;
while(rs.next()){
mealName = rs.getString(1);
dueTime = rs.getTime(3);
time = Time.valueOf( java.time.LocalTime.now() );
if(meal.equalsIgnoreCase(mealName) && time.before(dueTime)){
session.setAttribute("mealName", mealName);
con.close();
found = 1;
response.sendRedirect("header.jsp");
break;
}
}
if(found == 0){
session.setAttribute("orderror",meal+mealName+time+dueTime+ "The time for taking the order is over...");
con.close();
response.sendRedirect("placeOrder.jsp");
}
}
catch(Exception e){
out.println(e.getMessage());
}
%>

最新更新