【问题标题】:How to get last accessed time?如何获取上次访问时间?
【发布时间】:2020-04-23 16:13:24
【问题描述】:

当用户注销后再次登录时,我想在用户的个人资料页面上显示上次访问时间。我正在使用 HttpSession。 我有三个 servlet

  1. 登录
  2. 退出
  3. 简介

我应该在哪里使用long lastTime = session.getLastAccessedTime();

代码如下:

登录

    String name = request.getParameter("name");
    String password = request.getParameter("password");

    if (password.equals("admin123")) {
        out.print("Welcome, " + name);
        HttpSession session = request.getSession();
        session.setAttribute("name", name);
    } else {
        out.print("Sorry, username or password error!");
        request.getRequestDispatcher("login.html").include(request, response);
    }

退出

    HttpSession session = request.getSession();
    session.invalidate();

    out.print("You are successfully logged out!");

个人资料

    HttpSession session = request.getSession(false);
    if (session != null) {
        String name = (String) session.getAttribute("name");
        long lastTime = session.getLastAccessedTime();
        out.print(lastTime + "last login time");
        out.print("Hello, " + name + " Welcome to Profile");

【问题讨论】:

  • session.getLastAccessedTime() 与身份验证没有任何关系。这是最后一次使用JSESSIONID={sessionId} 请求的时间。 docs.oracle.com/javaee/5/api/javax/servlet/http/…
  • 那我怎样才能得到用户的最后登录时间。请告诉我。
  • 你需要自己实现这个功能。在您的 User 对象上添加 lastAuthenticatedOn 属性并在身份验证结束时对其进行更新。

标签: java servlets httpsession


【解决方案1】:

当用户注销时在db中存储一个存储并下次使用它。这是一个好方法。如果服务器重新启动,我认为其他方法不会起作用。当用户会话结束时或根据您的要求存储在数据库中。如果您想使用 HttpSession 侦听器,请查看http://www.mkyong.com/servlet/a-simple-httpsessionlistener-example-active-sessions-counter/

【讨论】:

    猜你喜欢
    • 2018-07-20
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 2014-06-18
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    相关资源
    最近更新 更多