JAVA WEB

Listener,Filter,Servlet执行顺序和生命周期

Listener、Filter、Servlet定义:Listener:首先定义一个Listener,实现以下接口:HttpSessionListener(用来监控session的创建,销毁等)ServletRequestListener(用于监控servlet上下文request)ServletRequestAttributeListener(用于监控request中的attribute的操作)加

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

原创不易,完成人机校验,阅读全文

相关推荐