Java IF语句在JSP中错误执行
这是我的JSP代码,用于使用数据库获取一顿饭的结束时间,并将其与系统时间进行比较。我使用了if语句来查看时间是否在结束时间之前,重定向到另一个页面,但如果时间超过了一顿饭的结束时间,则显示一个错误 这里有一个陷阱,if语句是有效的,但不是以我刚才解释的方式 有什么想法吗?先谢谢你Java IF语句在JSP中错误执行,java,mysql,jsp,if-statement,Java,Mysql,Jsp,If Statement,这是我的JSP代码,用于使用数据库获取一顿饭的结束时间,并将其与系统时间进行比较。我使用了if语句来查看时间是否在结束时间之前,重定向到另一个页面,但如果时间超过了一顿饭的结束时间,则显示一个错误 这里有一个陷阱,if语句是有效的,但不是以我刚才解释的方式 有什么想法吗?先谢谢你 <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import="java.sql.*" %> <!DOCTYP
<%@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,在
响应之后添加中断
。sendRedirect(“header.jsp”)
并删除,否则继续代码>
对于其余部分,我建议使用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());
}
%>
Addbreak
afterresponse.sendRedirect(“header.jsp”)代码>——去掉那些愚蠢、多余的,否则继续代码>,因为循环会在下一行中自动继续}
。最好从服务器端建立数据库连接,而不是在JSP页面上完成所有操作。您可以在servlet中进行处理,设置所需的会话属性,然后尝试从sessionScope内置int变量在JSP中获取它们。这将提高可读性。谢谢大家,但问题是通过使用LocalTime
代替我使用的getTime()
解决的。你能说出背后的原因吗?非常感谢@Bashir。原来问题只是我必须使用LocalTime
而不是getTime()
。但是你能说出它背后的逻辑吗?java.util.Date
的getTime()方法返回自1970年1月1日、00:00:00 GTM和LocalTime.now()以来的毫秒数
用于从默认时区的系统时钟获取当前时间。是否可以比较日期
和本地日期
是否相等?我正在努力,但做不到。你能建议一些方法吗?感谢将Date
转换为LocalDate
,然后进行比较