我如何检查哪些所有用户都登录到我的应用程序

2023-12-03

我有一个基于网络的应用程序,它使用用户名和密码进行登录。

现在我如何检查所有用户在该时间登录的特定时间。 我正在使用会话管理,并且应用程序中没有使用数据库,所有内容都在文件系统上

编辑:1个更愚蠢的疑问..如何定义具有应用程序范围的变量..是这样的吗?

<env-entry>
<env-entry-name>test/MyEnv2</env-entry-name>
<env-entry-type>java.lang.Boolean</env-entry-type>
<env-entry-value>true</env-entry-value>
</env-entry>

只需收集所有登录用户Set在应用范围内。如果您的应用程序设计良好,您应该有一个 javabeanUser它代表登录的用户。让它实现HttpSessionBindingListener并从中添加/删除用户Set当它即将在会话中绑定/解除绑定时。

开球示例:

public class User implements HttpSessionBindingListener {

    @Override
    public void valueBound(HttpSessionBindingEvent event) {
        Set<User> logins = (Set<User>) event.getSession().getServletContext().getAttribute("logins");
        logins.add(this);
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
        Set<User> logins = (Set<User>) event.getSession().getServletContext().getAttribute("logins");
        logins.remove(this);
    }

    // @Override equals() and hashCode() as well!

}

请注意,您需要准备Set在应用程序范围内,这样它就不会返回null在上述方法中。您可以通过空检查以相同的方法执行此操作,或者在以下命令的帮助下执行此操作ServletContextListener#contextInitialized().

然后,在应用程序中您可以访问的任何位置ServletContext,就像在 servlet 中一样,您可以按如下方式访问登录用户:

Set<User> logins = (Set<User>) getServletContext().getAttribute("logins");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何检查哪些所有用户都登录到我的应用程序 的相关文章

随机推荐