Java Web三大组件指的是Servlet、Filter、Listener。
一、Listener简介
Listener表示服务器的事件监听器,用于监听三个域对象的状态(对象、对象的属性)变化,三个域对象分别是:
ServletContext
HttpSession
HttpServletRequest
Java Web 服务器端的事件监听器一共分为三大类,八小类。
1.ServletContext
ServletContextListener
ServletContextAttributeListener
2.HttpSession
HttpSessionListener
HttpSessionActivationListener
HttpSessionBindingListener
HttpSessionAttributeListener
3.HttpServletRequest
ServletRequestListener
ServletRequestListener
日常开发中会用到的ServletContext的事件监听,对应的API就是ServletContextListener。
二、Listener使用
我们介绍ServletContextListener。
文档翻译:
此接口的实现接收有关更改它们所属的 Web 应用程序的 servlet 上下文的通知。要接收通知事件,必须在 Web 应用程序的部署描述符中配置实现类。
ServletContextListener负责监听 ServletContext 的创建和销毁,就可以监听服务器的启动和关闭。这样我们就可以在服务器启动和关闭的时候执行一些任务,比如服务器启动之后读取Spring Framework 的配置文件(applicationContext.xml),创建Spring的核心容器。
有两种使用方式:
1.采用 javax.servlet.annotation 包下的 WebListener 注解;
2.通过ServletContext定义的addListener 方法进行注册。
三、三大组件初始化顺序与销毁顺序
- Listener
- Filter
- Servlet
销毁顺序,反过来的:
- 先销毁 Servlet;
- Filter
- Listener