博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web.xml 中的listener、 filter、servlet 加载顺序
阅读量:6515 次
发布时间:2019-06-24

本文共 1008 字,大约阅读时间需要 3 分钟。

 

 

 转:http://profound-accumulation.iteye.com/blog/2240710

 

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下。

首先可以肯定的是,加载顺序与它们在web.xml文件中的先后顺序无关。即不会因为filter写在listener的前面而会先加载filter。

最终得出的结论是:listener->filter->servlet

同时还存在着这样一种配置节:context-param,它用于向ServletContext提供键值对,即应用程序上下文信息。我们的listener,filter等在初始化时会用到这些上下文中的信息,那么context-param配置节是不是应该写在listener配置节前呢?实际上context-param配置节可写在任意位置,

因此真正的加载顺序为:context-param->listener->filter->servlet

对于某类配置节而言,与它们出现的顺序是有关的。以filter为例,web.xml中当然可以定义多个filter,与filter相关的一个配置节是filter-mapping,这里一定要注意,对于拥有相同filter-name的filter和filter-mapping配置节而言,filter-mapping必须出现在filter之后,否则当解析到filter-mapping时,它所对应的filter-name还未定义。web容器启动时初始化每个filter时,是按照filter配置节出现的顺序来初始化的,当请求资源匹配多个filter-mapping时,filter拦截资源是按照filter-mapping配置节出现的顺序来依次调用doFilter()方法的。

servlet同filter类似,此处不再赘述。

由此,可以看出,web.xml的加载顺序是:context-param->listener->filter->servlet,而同个类型之间的实际程序调用的时候的顺序是根据对应的mapping的顺序进行调用的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。

 
 
 谢谢您的赞助,我会做的更好!

 

 

转载地址:http://zflfo.baihongyu.com/

你可能感兴趣的文章
恢复 git reset -hard 的误操作
查看>>
菜鸟初始代码旅程——修改记录
查看>>
C# WinForm 文件上传下载
查看>>
【javascript】ajax请求 编码问题导致的ie浏览器在输入中文文字后没有内容,而chrome正常搜到文字...
查看>>
Git分支操作
查看>>
Spring Integration概述
查看>>
[SAP ABAP开发技术总结]权限对象检查
查看>>
RDIFramework.NET ━ 9.6 模块(菜单)管理 ━ Web部分
查看>>
Android安全问题 静音拍照与被拍
查看>>
cocos2d-x 3.1.1 学习笔记[13] listen 监听器
查看>>
定制私人博客
查看>>
WTL介绍
查看>>
应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较(转)
查看>>
放量滞涨,抛出信号
查看>>
BeanFactory not initialized or already closed - call 'refresh' before accessing beans解决办法
查看>>
dSYM 文件分析工具
查看>>
R语言合并data.frame
查看>>
linux主机下的Vmware Workstation配置NAT设置 端口映射-Ubuntu为例
查看>>
unity physics joint
查看>>
TD的访问地址
查看>>