思想:
如何记录在线人数量:
只要有一个session创建,则数量+1.
第一步:创建监听器
package czb.listener;
import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListenerDemo implements HttpSessionListener {
// 当容器创建一个session时,由容器调用这个方法
public void sessionCreated(HttpSessionEvent se) {
// 统计在线人数
ServletContext context = se.getSession().getServletContext();
AtomicInteger count = (AtomicInteger) context.getAttribute("count");
if (count == null) {
count= newAtomicInteger(1);
}else{
count.addAndGet(1);
}
context.setAttribute("count",count);
}
// 当session过期,或执行了session的invalide(注销)方法时由容器来调用这个方法
public void sessionDestroyed(HttpSessionEvent se) {
HttpSession s = se.getSession();
// 统计在线人数
ServletContext context = se.getSession().getServletContext();
AtomicInteger count = (AtomicInteger) context.getAttribute("count");
count.addAndGet(-1);
context.setAttribute("count",count);
}
}
第二步:配置web.xml
<listener>
<listener-class>czb.listener.SessionListenerDemo</listener-class>
</listener>
第三步:显示页面
<body>
在线人数:${count.get()}
</body>