Listener监听器

8 篇文章 0 订阅
7 篇文章 0 订阅
  • 监听器:

    • 用于监听事件,在事件发生前后,执行一些操作
  • 监听器操作的上下文:

    • 事件源: 发生事件的位置/对象
    • 监听器: 监听事件源,监听到事件发生后,调用事件处理
  • 监听模型

    • 观察者模型
    • 模型图
  • Servlet中有6个事件和8个监听器

    • 主要提供了对ServletContext, HttpSession,* ServletRequest*的监听
Listener接口Event类
ServletContextListenerServletContextEvent
ServletContextAttributeListenerServletContextAttributeEvent
HttpSessionListener
HttpSessionActivationListener
HttpSessionEvent
HttpSessionAttributeListener
HttpSessionBindingListener
HttpSessionBindingEvent
ServletRequestListenerServletRequestEvent
ServletRequestAttributeListenerServletRequestAttributeEvent

- ServletContextListener示例
- 实现ServletContextListener接口
- 编写配置文件

@WebListener//注解配置listener
public class ContextListener implements ServletContextListener{
    @Override
    //应用初始化时---服务器启动时触发
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("initialize!");
    }

    @Override
    //应用销毁时---服务器停止时触发
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("desotry!");
    }
}
<!--配置文件-->
<listener>
    <listener-class>listener.ContextListener</listener-class>
</listener>
  • 监听器应用
    • 统计在线人数
      • 将数据存储在ServletContext中
      • 上线/下线和HttpSession对象有关
public class OnlineListener implements HttpSessionListener, ServletContextListener{
    private ServletContext context = null;
    private int count = 0;
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        this.context = sce.getServletContext();
        count = 0;
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    }
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("session created");
        context.setAttribute("count", ++count);
    }
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("session destoryed");
        context.setAttribute("count", --count);
    }
}
  • servlet/filter/listener初始化顺序
    • Listener - Filter - Servlet
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值