web.xml 中的listener、 filter、servlet 加载顺序
1.
在 web.xml 文件中不同类型的加载跟定义的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:
listener -> filter -> servlet;
测试方法:分别自定义一个listener,filter和servlet。在init()方法里面打印日志信息,启动服务器后看日志信息顺序即可。
2.同类型配置默认根据定义先后进行加载,如web.xml定义多个filter(先后定义filter1,filter2,filter3):则按filter1->filter2->filter3顺序加载;
测试方法:定义相同类型的filter,在init()方法日志,看日志先后顺序即可。
3.定义多个servlet时,可通过配置<load-on-startup>x</load-on-startup>定义配置优先级。配置如下:
<servlet>
<servlet-name>my_servlet</servlet-name>
<servlet-class>com.mycompany.ServletClass1</servlet-class>
< init-param> <!--定义servlet的初始化参数, 可以有多个init-param参数-->
< param-name>iParam< /param-name>
< param-value>2< /param-value>
< /init-param>
< load-on-startup>2< /load-on-startup> <!--定义servlet的加载顺序-->
</servlet>
<servlet-mapping>
<servlet-name>my_servlet</servlet-name>
<url-pattern>*.hello</url-pattern>
</servlet-mapping>
4.配置了 context-param参数时,加载顺序为context-param ->listener -> filter -> servlet