java - 获取在线用户名列表

时间:2012-10-31 02:42:58

标签: java session servlets

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

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

请建议这是否是正确的方法,或者是否有更好的方法来执行此操作。

1 个答案:

答案 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()