zoukankan      html  css  js  c++  java
  • Web 监听器

    什么事web 监听器?

    • Servlet规范中定义的一种特殊类
    • 用于监听ServletContext、HttpSession和ServletRequest等象的创建与销毁的事件
    • 用监听域对象的属性发生修改的事件

    web 监听器的常见用途:

    • 统计在线人数和在线用户
    • 系统启动时加载初始化信息
    • 统计网站访问量
    • 跟Sring结合

    配置web监听器:

    • 创建一个实现监听接口的类

        import javax.servlet.ServletContextEvent;

        import javax.servlet.ServletContextListener;

        public class FirstListener implements ServletContextListener {

          @Override
          public void contextDestroyed(ServletContextEvent arg0) {

            System.out.println("context Destroyed!");
          }

          @Override
          public void contextInitialized(ServletContextEvent arg0) {
            System.out.println("context Initialized!");
          }

        }

    • 配置web.xml进行注册

        <!-- 注册web监听器 -->

        <listener>
          <listener-class>com.cgj.spring.mvc.listener.FirstListener</listener-class>
        </listener>

    web监听器的启动顺序:

    • 一个web.xml中多个监听器,按注册的顺序启动
    • 加载优先级:监听器 > 过滤器 > Servlet

    web监听器的分类:

    • 按监听的对象划分:

        监听应用程序环境对象(ServletContext)的事件监听器

        监听用户会话对象(HttpSession)的事件监听器

        监听请求消息对象(ServleRequest)的事件监听器

    • 按监听的事件划分:

        监听域对象自身的创建和销毁的事件监听器

          ServletContextListener:编写定时器、加载全局属性对象

          HttpSessionListener:统计在线人数、记录访问日志

          ServleRequestListener:读取请求参数、记录访问历史

        监听域对象的属性增加和删除的事件监听器

          方法:attributeAdded,attributrRemoved,attributeReplaced

          接口:ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener

        监听绑定到HttpSession域中的某个对象的状态的事件监听器(不需要在web.xml中注册,只需在对应类中实现相应的接口)

          HttpSessionBinDingListener:

            绑定:valueBound方法

            解除绑定:valueUnbound方法

          HttpSessionActivationListener(钝化和活化需要实现Serializable接口)

            钝化:sessionWillPasivate方法

            活化:sessionDidActivate方法

         (什么是Session钝化?

     Servlet3.0下的监听器的用法:

      不需要在web.xml中注册只需要在,监听器的类上边加一个注解@WebListener("describe info");

      弊端:无法定义监听器的顺序,需要tomcat1.7及以上,jdk1.6及以上

  • 相关阅读:
    kafka的概念
    java的多线程:java安全问题产生的原因与JMM的关系
    java的多线程:线程安全问题
    web自动化之键盘操作
    获取cookie里面的sessionid
    Python连接mysql数据库
    Python 发送Email
    Python日志模块
    openxl模块从excel里面读取数据
    Python读取配置文件
  • 原文地址:https://www.cnblogs.com/LionheartCGJ/p/6794415.html
Copyright © 2011-2022 走看看