3

如何使用tomcat的catlina api访问会话管理。我需要从我的代码中使其他用户的会话无效。

4

2 回答 2

2

javax.servlet出于显而易见的原因,我个人不喜欢绑定到 Tomcat 包并尽可能多地使用API。您可以通过创建会话侦听器并将所有会话保存在 中来完成您的任务WeakHashMap,就像这样

<!-- your webapp's web.xml -->
<listener>
  <listener-class>path.to.SessionListener</listener-class>
</listener>

class SessionListener implements HttpSessionListener {
   private static final Map<String, HttpSession> sessions = Collections.synchronizedMap(new WeakHashMap<String, HttpSession>());

   public void sessionCreated(HttpSessionEvent event) {
      sessions.put(event.getSession().getId(), event.getSession());
   }

   public void sessionDestroyed(HttpSessionEvent event) {
      sessions.remove(event.getSession().getId());
   }
}

其余的就像添加另一种方法来遍历所有会话并使它们无效一样简单。

于 2012-09-14T10:31:52.507 回答
0

对特定用户使用 session.invalidate 方法,例如 .

如果您在 session.set 属性中设置用户,则从访问器方法中获取该特定方法。

使用 pojo bean 来访问它。

在使会话检查无效之前,它必须为真或有效。

于 2012-09-14T05:23:01.987 回答