欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > JavaWeb系列十四: JavaWeb三大组件之监听器Listener

JavaWeb系列十四: JavaWeb三大组件之监听器Listener

2024/10/24 7:24:40 来源:https://blog.csdn.net/qq_18817831/article/details/139919073  浏览:    关键词:JavaWeb系列十四: JavaWeb三大组件之监听器Listener

老韩- JavaWeb三大组件之监听器Listener

  • 监听器Listener文档说明
  • ServletContextListener监听器
  • ServletContextAttributeListener监听器
  • HttpSessionListener监听器
  • HttpSessionAttributeListener监听器
  • ServletRequestListener监听器
  • 其它监听器
    • ServletRequestAttributeListener
    • HttpSessionBindingListener
    • HttpSessionActivationListener

在这里插入图片描述

  1. Listener监听器是JavaWeb三大组件之一, JavaWeb三大组件分别是: Servlet程序, Listener监听器, Filter过滤器
  2. Listener是JavaEE的规范, 就是接口
  3. 监听器的作用是, 监听某种变化(一般就是 对象创建/销毁, 属性变化), 触发对应方法完成相应的任务
  4. JavaWeb中的监听器共八个, 目前最常用的是ServletContextListener

监听器Listener文档说明

  1. ServletContextListener(Interface), 用来感知ServletContext对象的创建和销毁
    在这里插入图片描述
  2. ServletContextAttributeListener(Interface), 用来感知ServletContext对象属性的变化
    在这里插入图片描述
  3. ServletRequestListener(Interface), 用来监听和感知ServletRequest对象的创建和销毁在这里插入图片描述
  4. ServletRequestAttributeListener(Interface), 用来感知ServletRequest对象属性的变化
    在这里插入图片描述
  5. HttpSessionListener(Interface), 用来监听HttpSession对象的创建和销毁
    在这里插入图片描述
  6. HttpSessionAttributeListener(Interface), 用来监听HttpSession对象属性的变化
    在这里插入图片描述
  7. HttpSessionBindingListener(Interface)(感知监听器), 将一个数据绑定到Session, 用来一对一的监听
    在这里插入图片描述
  8. HttpSessionActivationListener(Interface), 用来监听Session绑定的对象钝化或者激活的时间
    钝化: 把Session绑定的对象持久化到磁盘
    激活: 重新读回来再放到Session空间
    在这里插入图片描述

ServletContextListener监听器

  1. 作用: 监听ServletContext创建或销毁(当我们Web应用启动时, 就会创建ServletContext), 即生命周期监听. 应用场景: (1) 加载初始化的配置文件; (2) 任务调度(配合定时器Timer/TimerTask)
  2. 相关方法

void contextInitialized(ServletContextEvent sce) 创建ServletContext时触发
contextDestroyed(ServletContextEvent sce) 销毁ServletContext时触发

  1. 应用实例
  1. 新建java项目
    在这里插入图片描述
    在这里插入图片描述
  2. 导入Web框架
    在这里插入图片描述
    在这里插入图片描述
  3. 引入Servlet-pai.jar包
    在这里插入图片描述
    在这里插入图片描述
  4. 配置Tomcat
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  5. 新建一个java类
    在这里插入图片描述
  6. 实现监听器接口
    在这里插入图片描述
    在这里插入图片描述
  7. 业务处理
    在这里插入图片描述
  8. 配置web.xml
    在这里插入图片描述
  9. 运行结果
    在这里插入图片描述

ServletContextAttributeListener监听器

  1. 作用: 监听ServletContext的属性变化
  2. 相关方法

void attributeAdded(ServletContextAttributeEvent event)添加属性时调用
void attributeReplaced(ServletContextAttributeEvent event)替换属性时调用
void attributeRemoved( ServletContextAttributeEvent event)移除属性时调用

  1. 应用实例
  1. 新建java类, 实现监听器接口
    在这里插入图片描述
  2. 处理业务
    在这里插入图片描述
    创建并配置HiServlet, 书写业务逻辑中…
    在这里插入图片描述
  3. 配置web.xml
    在这里插入图片描述
  4. 运行结果
    项目启动时, ServletContext会添加三个默认对象, 被ZzwServletContextAttributeListener 监听到
    在这里插入图片描述
    访问hiServlet
    在这里插入图片描述

HttpSessionListener监听器

  1. 作用: 监听Session创建或销毁, 即生命周期监听(可用于监护用户上线, 离线)
  2. 相关方法

void sessionCreated(HttpSessionEvent se) 创建session时调用
sessionDestroyed(HttpSessionEvent se)销毁session时调用

  1. 应用实例
  1. 新建java类, 实现监听器接口
    功能: 监听session的创建和销毁. 监听到有session创建时, 给该session的生命周期设置为30s
    在这里插入图片描述
    改进后(用于监护用户上线, 离线)
    在这里插入图片描述
  2. 配置web.xml
    在这里插入图片描述
  3. 运行结果
    分析: 项目启动后, 会默认进入首页面, 这时会创建两个和系统相关的session, 30s过后, 这两个session被销毁, 被监听器监听到. 或者(如果不想看到它, 清一下控制台点击重新发布, 就没有了)
    在这里插入图片描述

HttpSessionAttributeListener监听器

  1. 作用: 监听Session属性的变化
  2. 相关方法

void attributeAdded(ServletRequestAttributeEvent srae) 添加属性时调用
void attributeReplaced(ServletRequestAttributeEvent srae) 替换属性时调用
void attributeRemoved(ServletRequestAttributeEvent srae) 移除属性时调用

  1. 应用实例
  1. 创建并实现监听器
    在这里插入图片描述
  2. 配置web.xml
    在这里插入图片描述
  3. 配置Servlet
    在这里插入图片描述
  4. 运行结果
    在这里插入图片描述
    在这里插入图片描述

ServletRequestListener监听器

  1. 作用: 监听Request创建或销毁, 即Request生命周期监听
  2. 相关方法

void requestInitialized(ServletRequestEvent sre) 创建request时触发
void requestDestroyed(ServletRequestEvent sre) 销毁request时触发

  1. 可以用来监控某个IP访问我们网站的频率, 记录日志, 访问资源的情况
  1. 实现监听器
    在这里插入图片描述
  2. 配置web.xml
    在这里插入图片描述
  3. 运行结果
    在这里插入图片描述

其它监听器

ServletRequestAttributeListener

HttpSessionBindingListener

HttpSessionActivationListener

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com