servelt filter listener 的生命周期
1. servlet
当第一次请求一个servlet资源时,servlet容器创建这个servlet实例,并调用他的
init(ServletConfig config)做一些初始化的工作,然后调用它的service方法处理请求。当第二次请求这个servlet资源时,servlet容器就不在创建实例,而是直接调用它的service方法处理请求,也就是说servlet对象是常驻内存的,是单例,因此不要把一些属性作为servlet的成员变量,避免并发访问问题,当servlet容器关闭或者重新加载web应用时,servlet会调用它的destory()方法,然后就就结束了。
2 filter ,Listener
当web容器启动的时候,去读取每个web应用的web.xml配置文件,当配置文件中配有filter和listener时,web容器实例化listener,filter,然后调用Filter的init(FilterConfig)方法做一些初始化(注意当我们的filter启动错误时,这个web应用将
不能用),当请求一个资源而这个资源正好被这个过滤器过滤,调用filter的doFilter方法,当servlet容器关闭或者重新加载web应用时,filter会调用它的destory()方法,然后销毁这个对象,listener是当某个事件发生时,调用它特定法,HttpSessionListener
,当创建一个session时会调用它的sessionCreated()方法,当servlet容器关闭或者重新加载web应用时lister对象被销毁。
总之,servlet filter listener 都是单例的,就是说在运行时只存在一个实例。
推荐阅读
-
SpringBoot的filter、listener、interceptor、AOP
-
SpringBoot的filter、listener、interceptor、AOP
-
SpringBoot的filter、listener、interceptor、AOP
-
Java Filter过滤器(拦截路径和方式的配置+生命周期+多个过滤器的先后执行顺序)
-
web.xml 中的listener、 filter、servlet 加载顺序及其详解
-
web.xml 中的listener、 filter、servlet 加载顺序及其详解(转)
-
web.xml 中的listener、 filter、servlet 加载顺序及其详解
-
Tomcat 源码分析(三)-(二)-WEB应用中的Listener、Filter、Servlet 的加载和调用
-
Servlet、Filter 和 Listener 调用顺序、生命周期的实验分析
-
SpringBoot 中Servlet,Filter,Listener的代码配置