server監聽器

目的

  • 監聽客戶端的請求和服務器端的操作
  • 通過實現Listener接口的類可以在特定事件(Event)發生時,自動激發一些操作

監聽登陸人數代碼實現

  • 首先要實現HttpSessionAttributeListener接口
@WebListener
public class OnlineListener implements HttpSessionAttributeListener {
}
  • 當登錄用戶的session發生增加時,人數加1
@Override
    public void attributeAdded(HttpSessionBindingEvent se) {
        System.out.println("OnlineListener.attributeAdded");

        String name =  se.getName();
        //System.out.println("name = " + name);
        //登錄用戶的session發生變化
        if("account".equals(name)){
            ServletContext application = se.getSession().getServletContext();
            int online_num = application.getAttribute("online_num") == null ? 0 : (Integer) application.getAttribute("online_num");
            System.out.println("online_num = " + online_num);
            online_num++;
            application.setAttribute("online_num",online_num);
        }

    }
  • 當登錄用戶的session發生減少時,人數減1
@Override
    public void attributeRemoved(HttpSessionBindingEvent se) {
        System.out.println("OnlineListener.attributeRemoved");

        String name =  se.getName();
        //退出 用戶的session發生變化
        if("account".equals(name)){
            ServletContext application = se.getSession().getServletContext();
            int online_num = application.getAttribute("online_num") == null ? 0 : (Integer) application.getAttribute("online_num");
            System.out.println("online_num = " + online_num);
            online_num--;
            application.setAttribute("online_num",online_num);
        }

    }

實現截圖

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章