Java 在用户登录时,希望检查当前时间并将其与JSP中以前的登录时间进行比较
在用户登录时,我想检查当前时间,并将其与JSP(JAVA)中以前的登录时间进行比较。我将每次登录时的时间存储在数据库中。现在我想做的就是将登录时间与之前登录时间的平均值进行比较,如果时间与用户通常的登录时间相近,则返回true。否则返回false。有谁能给我推荐一个好的函数来做这件事吗。我的代码如下:Java 在用户登录时,希望检查当前时间并将其与JSP中以前的登录时间进行比较,java,jsp,login,Java,Jsp,Login,在用户登录时,我想检查当前时间,并将其与JSP(JAVA)中以前的登录时间进行比较。我将每次登录时的时间存储在数据库中。现在我想做的就是将登录时间与之前登录时间的平均值进行比较,如果时间与用户通常的登录时间相近,则返回true。否则返回false。有谁能给我推荐一个好的函数来做这件事吗。我的代码如下: public boolean login_checking(String username) { public boolean login = false; try {
public boolean login_checking(String username) {
public boolean login = false;
try {
PreparedStatement ps = con.prepareStatement("select (case when ((timediff(time(now()),time(accesstime)))<'02:00:00') then 1 else 0 end)from tbl_login_history where uid = ?");
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
if (rs.first()) {
// login = rs.getInt(1) < 0;
// System.out.println(rs.getInt(1));
}
else
{
System.out.println("Not exist");
}
} catch (Exception e) {
e.printStackTrace();
}
return login;
}
public boolean登录检查(字符串用户名){
公共布尔登录=false;
试一试{
PreparedStatement ps=con.prepareStatement(“选择(case-when)((timediff(time(now()),time(accesstime)))您可以尝试此方法
当用户登录时,有一个名为usualtime的列
1.从数据库获取通常时间。
2.如果为空,则插入数据库。
3.如果不为空,则获取当前时间,并检查usualtime是否接近该时间。
4.如果接近,usualtime=(usualtime+currenttime)/2,更新数据库中的新usualtime并返回true
5.如果不在附近,则不更新数据库并返回false
我更正了代码。我只是将查询更改为如下所示
SELECT (select count(*) from tbl_login_history where hour(accesstime) between 4 and 12 AND uid=?),(select count(*) from tbl_login_history where hour(accesstime) between 13 and 19 AND uid=?),(select count(*) from tbl_login_history where hour(accesstime) between 19 and 1 AND uid=?);
在这个查询中,我将时间分为3个不同的区域,并检查每个区域的登录计数。如果需要更准确的时间,时间可以分为更多的区域。对于我的系统3就足够了。然后我检查用户从哪个区域有更多的登录。如果用户当前在通常的时区登录,则返回true。否则返回false。
感谢所有试图帮助我的人。您的代码现在正常工作了吗?sql查询不正确。它没有给出正确的答案。我只是对这些查询进行了更好的理解。我明白了。但问题是我无法检查您提到的第三点。无论如何,谢谢。)如果usualtime不是空的。也就是说,如果用户以前登录过,你必须检查当前时间是否接近该时间。它与when((timediff(time(now())、time(accesstime)))的作用相同。感谢@sonic的帮助。我对代码做了一些更改。它工作得很好。