在登录用户时,想要检查当前时间并将其与JSP中之前的登录时间进行比较

时间:2013-03-28 14:05:21

标签: java jsp login

在用户登录时,我想检查当前时间并将其与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;
}

2 个答案:

答案 0 :(得分:0)

你可以试试这个。

有一个名为normaltime或者其他的列,当用户登录时,

  

1.从db开始常规时间   2.如果它是空的,插入db。
  3.如果没有空,请获取当前时间并检查通常时间是否接近它   4.如果接近,通常时间=(通常时间+当前时间)/ 2,在db中更新新的通常时间并返回true   5.如果不近,请不要更新db并返回false。

答案 1 :(得分:0)

我更正了代码。我只是将查询更改为如下,

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。否则是假的。 感谢所有试图帮助我的人。