Listener,Filter,Servlet执行顺序和生命周期
Listener、Filter、Servlet定义:
Listener:
首先定义一个Listener,实现以下接口:
HttpSessionListener(用来监控session的创建,销毁等)
ServletRequestListener(用于监控servlet上下文request)
ServletRequestAttributeListener(用于监控request中的attribute的操作)
加载顺序:
日志:
查看启动日志如下:
信息: Initializing Coyote HTTP/1.1 on http-80
............
2016-1-14 0:47:04 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2016-1-14 0:47:04 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
...........
2016-01-14 00:47:23,369 INFO TestFilter:28 - ..............execute TestFilter init()..............
2016-1-14 0:47:23 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring FrameworkServlet 'spring'
...........
2016-1-14 0:47:25 org.apache.catalina.startup.Catalina start
信息: Server startup in 21565 ms
*******************************************************************************
结论:
从启动日志来看,
启动的顺序为listener->Filter->servlet.
简单记为:理(Listener)发(Filter)师(servlet).
执行的顺序不会因为三个标签在配置文件中的先后顺序而改变。
生命周期:
日志:
访问项目路径:http://localhost/MyWebProject/common/test.do,访问action两次,打断点后查看日志情况:
第一次访问:
2016-01-14 00:03:03,991 INFO TestListener:26 - ......TestListener requestInitialized()......
2016-01-14 00:03:04,001 INFO TestServlet:24 - ...TestServlet init() init..........
2016-01-14 00:03:04,011 INFO TestFilter:23 - ..............execute Tes
原创不易,完成人机校验,阅读全文