javaweb学习23:监听器

javaweb学习23:监听器

  • 监听器:

    • 编写一个监听器:实现一个监听器的接口;(有N种)

    • web.xml中配置监听器;

 

 

  • 代码案例:

    /**
    * 统计网站在线人数:
    * 其实就是统计session:因为
    */
    public class OnlineCountListener implements HttpSessionListener {

       //创建session监听:看你的一举一动
       //一旦创建一个session,就会触发一次这个事件!(观察者模式)
       public void sessionCreated(HttpSessionEvent se) {
           ServletContext context = se.getSession().getServletContext();
           System.out.println("Session ID:"+se.getSession().getId());
           Integer onlineCount= (Integer)context.getAttribute("OnlineCount");
           if(onlineCount ==null){
               onlineCount=new Integer(1);
          }else{
               int count=onlineCount.intValue();
               onlineCount=new Integer(count+1);
          }

           context.setAttribute("OnlineCount",onlineCount);

      }

       //销毁session监听
       //一旦销毁一个session,就会触发一次这个事件!
       public void sessionDestroyed(HttpSessionEvent se) {
           ServletContext context = se.getSession().getServletContext();
           se.getSession().invalidate();//销毁session
           Integer onlineCount= (Integer)context.getAttribute("OnlineCount");
           if(onlineCount ==null){
               onlineCount=new Integer(0);
          }else{
               int count=onlineCount.intValue();
               onlineCount=new Integer(count-1);
          }

           context.setAttribute("OnlineCount",onlineCount);
      }

       /**
        * Session销毁:
        * 1,手动销毁: se.getSession().invalidate();
        * 2,自动销毁:
        */
    }

     

  • 代码案例:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
            version="4.0">

       <!--注册监听器-->
       <listener>
           <listener-class>com.listener.OnlineCountListener</listener-class>
       </listener>

       <!--session销毁时间:以分钟为单位-->
       <session-config>
           <session-timeout>1</session-timeout>
       </session-config>
    </web-app>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @   gzs1024  阅读(117)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示