【发布时间】:2012-04-12 17:22:04
【问题描述】:
我正在使用 JPA 构建一个 struts 2 应用程序。用户可以多次登录应用程序。我想要
- 用户能够在网格中查看他的所有会话,并可能突出显示当前会话,并且用户可以选择一个会话并终止它。
- 管理员还应该能够查看所有登录用户,还可以查看每个登录用户的所有会话,还可以选择终止任何会话。
谢谢
【问题讨论】:
标签: java jsp jakarta-ee struts2
我正在使用 JPA 构建一个 struts 2 应用程序。用户可以多次登录应用程序。我想要
谢谢
【问题讨论】:
标签: java jsp jakarta-ee struts2
我认为HttpSessionBindingListener 是您要找的。
我不会写完整的代码,只是建议你一种方法:
您可以将静态字段(映射)添加到您的User class (DTO),您将在其中存储所有活动的sessions of users。 :
例如private static Map<User, HttpSession> usersSessions= new HashMap<User, HttpSession>();
然后让User class 实现HttpSessionBindingListener。通过这种方式,您可以指定 valueBound(HttpSessionBindingEvent event) 方法,您可以在其中获取实际创建的 session 并将其放入您的 usersSessions 中,如下所示:
usersSessions.put(this, event.getSession());
然后在valueUnbound(HttpSessionBindingEvent event)方法中:
usersSessions.remove(this); 在logout 之后删除users session。
这样您就拥有了所有active sessions 中的Map 以及它属于哪个用户的信息。 IMO,您可以通过此轻松找出您的其他问题。
【讨论】: