Servlet 中的 Listener

简介: 基于观察者模式,其设计为开发 Servlet 应用程序提供了一种快捷的手段,能够方便的从另一个纵向维度控制程序和数据.目前 Servlet 中提供了 6 种两类事件的观察者接口,它们分别是EventListenersServletContex...

基于观察者模式,其设计为开发 Servlet 应用程序提供了一种快捷的手段,能够方便的从另一个纵向维度控制程序和数据.

目前 Servlet 中提供了 6 种两类事件的观察者接口,它们分别是

  • EventListeners
    • ServletContextAttributeListener
    • ServletRequestAttributeListener
    • ServletRequestListener
    • HttpSessionAttributeListener
  • LifecycleListeners
    • ServletContextListener
    • HttpSessionListener


      img_f16b95bfbc925674208d3cc65bb90e11.png
      Servlet 中的 Listener

实际上,这 6 个 Listener 都继承了 EventListener 接口,每个 Listener 各自定义了需要实现的接口,这些接口如表


img_9b6e73abdd57bf1ad00b09c755092229.png
Listener 需要实现的接口及说明

它们基本上涵盖了整个 Servlet 生命周期中的每种事件.
这些 Listener 的实现类可以

  • 配置在 web.xml 中的 <listener> 标签中
  • 在应用程序中动态添加 Listener

需要注意的是 ServletContextListener 在容器启动之后就不能再添加新的,因为它所监听的事件已经不会再出现.

如 Spring 的 org.springframework.web.context.ContextLoaderListener 就实现了一个ServletContextListener,当容器加载时启动 Spring 容器
ContextLoaderListener 在contextInitialized 方法中初始化 Spring 容器,有几种办法可以加载 Spring 容器

  • 通过在web.xml 的 <context-param> 标签中配置 Spring 的 applicationContext.xml 路径,文件名可以任意取
  • 如果没有配置,将在/WEB-INF/路径下查找默认的 applicationContext.xml 文件ContextLoaderListener 的 contextInitialized 方法代码如下
public void contextInitialized(ServletContextEvent event) { 
       //因为本身就是ContextLoader的子类,这里可以直接使用ContextLoader来初始化IoC容器 
        this.contextLoader = createContextLoader();  
        if (this.contextLoader == null) {  
             this.contextLoader = this  
        }  
        this.contextLoader.initWebApplicationContext(event.getServletContext());  
}  
目录
相关文章
|
12月前
|
XML 开发框架 Java
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)
|
4月前
Servlet3.0+环境下使用注解注册Servlet、Filter和Listener组件
Servlet3.0+环境下使用注解注册Servlet、Filter和Listener组件
58 2
|
4月前
|
前端开发 Java 容器
SpringBoot中注册Servlet、Filter和Listener(代码和注解两种方式)
SpringBoot中注册Servlet、Filter和Listener(代码和注解两种方式)
97 0
|
4月前
|
缓存 Java Spring
servlet/filter/listener/interceptor区别与联系
servlet/filter/listener/interceptor区别与联系
58 0
|
12月前
|
XML 监控 Java
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)4
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)4
|
12月前
|
存储 安全 Java
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)3
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)3
|
12月前
|
Java 应用服务中间件 API
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)2
Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)2
|
XML 数据格式
告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发
告别web.xml映射Servlet、Filter、Listener,解锁注解新方式开发
|
Java API Spring
在spring boot中添加servlet filter *Listener
在spring boot中添加servlet filter *Listener
在spring boot中添加servlet filter *Listener
|
XML Java 应用服务中间件
SpringBoot2.x系列教程25--SpringBoot中整合Servlet、Filter和listener
前言 在学习Servlet、Filter、Listener的时候,我们知道可以有2种注册方式,即可以在web.xml文件中注册,也可以利用对应的注解实现注册。那么在SpringBoot中,如果我们还要创建使用Servlet、Filter、Listener这3个类,那么该如何使用呢? 今天 壹哥 就带大家学习在SpringBoot中如何注册使用Servlet、Filter、Listener这3个类。 一. Spring Boot中注册配置Servlet,Filter和Listener 1. 概述 我们在Spring Boot中使用内嵌的Servlet容器时,可以通过使用Spring Bean的
326 0
下一篇
DDNS