如何使用tomcat的catlina api访问会话管理。我要求从我的代码中使其他用户的会话无效。
答案 0 :(得分:2)
出于显而易见的原因,我个人不希望绑定到Tomcat包并尽可能多地使用javax.servlet
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());
}
}
其余的就像添加另一种方法来迭代所有会话并使它们无效一样简单。
答案 1 :(得分:0)
为特定用户使用session.invalidate方法,例如。
如果您在session.set属性中设置用户,则从accessor方法获取该particualr方法。
使用pojo bean来获取它。
在使会话无效之前,检查必须是真实的或有效的。