JavaWeb的web.xml中context-param、listener、filter、servlet加载顺序(重点)

结论

先说结论,在JavaWeb的web.xml中的加载顺序为:

context-param -> listener -> filter -> servlet

分析

下面描述的是以运行在tomcat中的web程序为例,首先web程序会去读web.xml文件。

1、context-param

<context-param></context-param>这个标签是web程序的上下文参数,也是启动的初始化参数,web程序最先解析的就是这个标签,无论这个标签在什么位置都先解析这个标签。解析上面的context-param标签之后会创建一个ServletContext对象,web项目的整个Application都将共享这个ServletContext。说到这里要注意一个问题,就是《Tomcat部署多工程时Log4j的问题》。

2、listener

<listener></listener>这个标签是监听器,上面步骤完成之后tomcat会创建监听器的实例就是标签里面的对象。在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中可以获得ServletContext对象,从而获取context-param的值

ServletContext = ServletContextEvent.getServletContext()       
context-param = ServletContext.getInitParameter("context-param的key")   

3、filter

<filter></filter>这个是过滤器,完成上面步骤后开始实例化。注意:如果有多个过滤器,那就按照过滤器在web.xml的顺序来执行。

4、servlet

<servlet></servlet>这个属于服务接口,这个是在以上都完成之后才开始实例化。
在servlet的配置当中,<load-on-startup>的含义是:

  1. 零或者正数代表服务启动就启动该servlet;
  2. 正数的值越小,启动该servlet的优先级越高;
  3. 负值或者无此配置则使用时才会被执行。

总结

如果是在Springmvc或者Struct框架中会有interceptor拦截器,如果是在框架中执行顺序如下:

context-param -> listener -> filter -> interceptor -> 控制器

参考:
《拦截器(Interceptor)和过滤器(Filter)的执行顺序和区别》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leo825...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值