1

ユーザーのリストをオンラインで取得したいと考えています。リンクhttp://viralpatel.net/blogs/jsp-servlet-session-listener-tutorial-example-in-eclipse-tomcat/で、オンラインのユーザー数を取得するために使用されるコードを確認できました。

sessionCreated(HttpSessionEvent event) でユーザー名を取得して保存し、このリストを表示する ArrayList が必要だと思います。

これが正しい方法であるか、またはこれを行うためのより良い方法があるかどうかを提案してください。

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 に答える