servlet监听器

来源:互联网 发布:笔记本电脑蹭网软件 编辑:程序博客网 时间:2024/05/29 19:16

何谓监听器

  • Listener 用于监听 java web程序中的事件,例如创建、修改、删除session、request、context等,并触发响应的事件。
  • Listener 对应观察者模式,事件发生的时候会自动触发该事件对应的Listener。 Listener 主要用于对 session、request、context 进行监控。

监听器实现

  • 不同功能的Listener 需要实现不同的 Listener 接口,一个Listener也可以实现多个接口,这样就可以多种功能的监听器一起工作。
  • HttpSessionListener、ServletContextListener、ServletRequestListener分别监听 session、context、request 的创建与销毁。
public class TestListener implements HttpSessionListener, ServletRequestListener, ServletContextListener {    @Override    public void contextInitialized(ServletContextEvent sce) {        ServletContext context = sce.getServletContext();        System.out.println("context create: " + context.getContextPath());    }    @Override    public void contextDestroyed(ServletContextEvent sce) {        System.out.println("context destroy: " + sce.getServletContext().getContextPath());    }    @Override    public void requestDestroyed(ServletRequestEvent sre) {        ServletRequest req = sre.getServletRequest();        System.out.println("request destroy: " + req.getCharacterEncoding());    }    @Override    public void requestInitialized(ServletRequestEvent sre) {        ServletRequest req = sre.getServletRequest();        System.out.println("request initialize: " + req.getCharacterEncoding());    }    @Override    public void sessionCreated(HttpSessionEvent se) {        HttpSession session = se.getSession();        System.out.println("session create: " + session.getId());    }    @Override    public void sessionDestroyed(HttpSessionEvent se) {        HttpSession session = se.getSession();        System.out.println("session destroy:" + session.getLastAccessedTime());    }}
  • HttpSessionAttributeListener、ServletContextAttributeListener、ServletRequestAttributeListener分别监听不同作用域中对象属性的变化(新增、移除、修改)。
public class SessionAttributeListenerTest implements HttpSessionAttributeListener {      public void attributeAdded(HttpSessionBindingEvent se) {          HttpSession session = se.getSession();          String name = se.getName();          ...    }      public void attributeRemoved(HttpSessionBindingEvent se) {          HttpSession session = se.getSession();          String name = se.getName();          ...    }      public void attributeReplaced(HttpSessionBindingEvent se) {          HttpSession session = se.getSession();          String name = se.getName();          Object oldValue = se.getValue();          ...    }  }  
  • HttpSessionBindingListener(当对象放到session中触发)和HttpSessionActivationListener(当服务器关闭时触发,用于session对象的钝化(保存到硬盘)及重新加载)监听session内的对象,不需要在web.xml中配置。
  • listener标签与 listener-class标签,listener一般配置在 servlet标签的前面。
<listener>    <listener-class>***</listener-class></listener>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 超市购物卡丢了怎么办 中石化油卡丢失怎么办 etc同车换车牌了怎么办 石油加油卡丢了怎么办 石化加油卡丢了怎么办 怎么办中石化的加油卡 中石油油卡丢失怎么办 公司加油卡丢了怎么办 yy频道被回收了怎么办 油卡里的圈存怎么办 农商银行圈存怎么办 社保卡号忘记了怎么办 陕西壳牌加油卡怎么办 联通用超了流量怎么办 联通3g上不了网怎么办 车玻璃水冻住了怎么办 车里玻璃水冻了怎么办 做现货亏了60万怎么办 宿舍太吵晚上睡不着觉怎么办 脚扎了钉子肿了怎么办 龙血树叶子下垂怎么办 龙血树叶子卷曲怎么办 3岁宝宝长期便秘怎么办 4岁小儿便秘严重怎么办 3岁宝宝便秘严重怎么办 3岁宝宝一直便秘怎么办 11个月宝宝便秘怎么办 2个月的宝宝便秘怎么办 宝宝便秘拉不下来怎么办 5一6岁儿童便秘怎么办 3个月宝宝便秘怎么办 8个月宝宝便秘怎么办 孕5个月咳嗽厉害怎么办 孕8个月咳嗽厉害怎么办 拆石膏后关节僵硬怎么办 宝宝的小腿不直怎么办 鸡咳嗽有痰呼噜怎么办 风热感冒怎么办小窍门 吃完虾喝了牛奶怎么办 三文鱼头汤腥怎么办 晚上咳嗽厉害怎么办睡不着觉