Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在用户登录时,希望检查当前时间并将其与JSP中以前的登录时间进行比较_Java_Jsp_Login - Fatal编程技术网

Java 在用户登录时,希望检查当前时间并将其与JSP中以前的登录时间进行比较

Java 在用户登录时,希望检查当前时间并将其与JSP中以前的登录时间进行比较,java,jsp,login,Java,Jsp,Login,在用户登录时,我想检查当前时间,并将其与JSP(JAVA)中以前的登录时间进行比较。我将每次登录时的时间存储在数据库中。现在我想做的就是将登录时间与之前登录时间的平均值进行比较,如果时间与用户通常的登录时间相近,则返回true。否则返回false。有谁能给我推荐一个好的函数来做这件事吗。我的代码如下: public boolean login_checking(String username) { public boolean login = false; try {

在用户登录时,我想检查当前时间,并将其与JSP(JAVA)中以前的登录时间进行比较。我将每次登录时的时间存储在数据库中。现在我想做的就是将登录时间与之前登录时间的平均值进行比较,如果时间与用户通常的登录时间相近,则返回true。否则返回false。有谁能给我推荐一个好的函数来做这件事吗。我的代码如下:

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的帮助。我对代码做了一些更改。它工作得很好。