我想在线获取用户列表。在链接http://viralpatel.net/blogs/jsp-servlet-session-listener-tutorial-example-in-eclipse-tomcat/中,我可以看到用于在线获取用户数的代码。
我想我需要一个ArrayList来获取并存储sessionCreated(HttpSessionEvent事件)中的用户名,然后显示这个列表。
请建议这是否是正确的方法,或者是否有更好的方法来执行此操作。
答案 0 :(得分:1)
你应该创建一个类似于:
的新听众import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.ArrayList;
public class SessionCounter implements HttpSessionListener {
private List sessions = new ArrayList();
public SessionCounter() {
}
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
sessions.add(session.getId());
session.setAttribute("counter", this);
}
public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
sessions.remove(session.getId());
session.setAttribute("counter", this);
}
public int getActiveSessionNumber() {
return sessions.size();
}
}
之后,将此类添加到web.xml
<web-app>
<listener>
<listener-class>
SessionCounter
</listener-class>
</listener>
</web-app>
现在,当你可以计算没有活跃用户时:
SessionCounter counter = (SessionCounter) session.getAttribute("counter");
counter.getActiveSessionNumber()