监听器

监听器是serlvet的一种,用于web整个环境的监听。包括application,session,request监听。

其最常见的应用是在线人数统计。原理是在系统初始化时建立一个application范围的user链表,然后对session的各种动作进行监听,当增加一个session后,往user链表中添加对象,当用户注销时从链表中删除对象。

监听器代码如下:

package com.listner;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;


public class OnlineDemo implements ServletContextListener,
        HttpSessionAttributeListener, HttpSessionListener {
    private ServletContext application = null;
    public void contextDestroyed(ServletContextEvent sce) {
    }

    /**

      此方法是监听器初始化方法,声明一个user链表

    */
    public void contextInitialized(ServletContextEvent sce) {
        application = sce.getServletContext() ;
        application.setAttribute("userlist", new ArrayList()) ;
    }

 

     /**

      当一个新的session被赋值是触发该方法

    */


    public void attributeAdded(HttpSessionBindingEvent sbe) {
      List list = (List)application.getAttribute("userlist") ;
      list.add(sbe.getValue()) ;
      application.setAttribute("userlist", list) ;
     

    }

    public void attributeRemoved(HttpSessionBindingEvent sbe) {
       
    }

    public void attributeReplaced(HttpSessionBindingEvent sbe) {
       

    }

    public void sessionCreated(HttpSessionEvent se) {
        // TODO Auto-generated method stub

    }

      /**

      在清除session之前调用,将session中的值从list中删除

    */


    public void sessionDestroyed(HttpSessionEvent sbe) {
         List list = (List)application.getAttribute("userlist") ;
         String value = (String)sbe.getSession().getAttribute("username") ;
         list.remove(value) ;
         application.setAttribute("userlist", list) ;

    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值