我想在线获取用户列表。在链接http://viralpatel.net/blogs/jsp-servlet-session-listener-tutorial-example-in-eclipse-tomcat/中,我可以看到用于获取在线用户数量的代码。
我想我需要一个 ArrayList 来获取并存储 sessionCreated(HttpSessionEvent event) 中的用户名,然后显示这个列表。
请建议这是否是正确的方法,或者是否有更好的方法来做到这一点。
我想在线获取用户列表。在链接http://viralpatel.net/blogs/jsp-servlet-session-listener-tutorial-example-in-eclipse-tomcat/中,我可以看到用于获取在线用户数量的代码。
我想我需要一个 ArrayList 来获取并存储 sessionCreated(HttpSessionEvent event) 中的用户名,然后显示这个列表。
请建议这是否是正确的方法,或者是否有更好的方法来做到这一点。
您应该创建一个类似于以下内容的新侦听器:
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()