package com.mahe666.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

//统计网站在线人数：统计session的数量
//Listener的种类非常多！！！如果都学了的话，就不用干别的了
public class OnlineCountListener implements HttpSessionListener {

    //创建Session的监听：看你的一举一动
    //每创建一个session，就会触发一次这个事件
    public void sessionCreated(HttpSessionEvent se) {
        ServletContext ctx = se.getSession().getServletContext();
        Integer onlineCount = (Integer)ctx.getAttribute("OnlineCount");

        System.out.println(se.getSession().getId());
        //项目刚启动的时候，会看到有3人 同时在线，因为Tomcat在启动服务的时候，会做一些事情，在这个过程中启用了几个session
        //当我们Redeploy重新发布项目的时候，他就会恢复正常了

        if (onlineCount == null){
            onlineCount = 1;
        }else{
            int count = onlineCount;
            onlineCount = count + 1;
        }

        ctx.setAttribute("OnlineCount",onlineCount);


    }
    //销毁Session的监听
    //每销毁一个session，就会触发一次这个事件
    public void sessionDestroyed(HttpSessionEvent se) {
        ServletContext ctx = se.getSession().getServletContext();
        Integer onlineCount = (Integer)ctx.getAttribute("OnlineCount");

        if (onlineCount == null){
            onlineCount = 0;
        }else{
            int count = onlineCount;
            onlineCount = count - 1;
        }

        ctx.setAttribute("OnlineCount",onlineCount);

    }
}
