Spring Boot使用监听器Listener
2019-10-18 本文已影响0人
_借东西的小人
监听器也叫Listener
,是Servle
t的监听器,可以用于监听Web应用中某些对象,信息的创建,销毁,增加,修改,删除等动作的发生,然后做出相应的处理.当范围对象的状态发生变化时,服务器自动调用监听器对象中的方法,常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等.
根据监听对象可以把监听器分为3类:ServletContext(对应application),HttpSession(对应session),ServletRequest(对应request).Application
在整个Web服务中只有一个,在Web服务器关闭是销毁.Session对应每个会话,在会话起始时创建,一端关闭会话时销毁.Request
对象是客户发送请求时创建的(一同创建的还有Response
),用于封装请求数据,在一次请求处理完毕时销毁.
根据监听的事件,可以把监听器分为以下3类.
- 监听对象创建与销毁,如
ServletContextListener
. - 监听对象域中属性的增加和删除,如
HttpSessionListener和ServletRequestListener
. - 监听绑定到Session上的某个对象的状态,如
ServletContextAttributeListener,HttpSessionAttributeListener,ServletRequestAttributeListener
等.
监听器Listener的使用
- 在Listener类上引入注解,将一个类声明为监听器.
@WebListener
该注解将会在应用部署时被容器处理,容器根据具体的属性配置将相应的类部署为监听器.
@WebListener
public class UserListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext上下文初始化");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext上下文销毁");
}
}
-
ServletContextListener类
能够监听ServletContext
对象的生命周期,实际上就是监听Web应用的生命周期.当Servlet容器启动或者终止Web应用时,会触发ServletContextEvent
事件,该事件由ServletContextListener
类来处理.在ServletContextListener
接口中定义了处理ServletContextEvent
事件的两个方法:contextInitialized和contextDestroyed
.
-
contextInitialized
:当Servlet容器启动Web应用时调用该方法.在调用完该方法之后,容器再对Filter
初始化,并且对那些在Web应用启动时就需要被初始化的Servlet进行初始化. -
contextDestroyed
:当Servlet容器终止Web应用时调用该方法.在调用该方法之前,容器会先销毁所有的Servlet和Filter过滤器.