1

我想在线获取用户列表。在链接http://viralpatel.net/blogs/jsp-servlet-session-listener-tutorial-example-in-eclipse-tomcat/中,我可以看到用于获取在线用户数量的代码。

我想我需要一个 ArrayList 来获取并存储 sessionCreated(HttpSessionEvent event) 中的用户名,然后显示这个列表。

请建议这是否是正确的方法,或者是否有更好的方法来做到这一点。

4

1 回答 1

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()
于 2012-10-31T03:00:37.997 回答