Spring MVC及Java Web应用中web.xml的<absolute-ordering>标签作用是什么?
<absolute-ordering>标签在web.xml中的作用 该标签是Servlet 3.0及以上版本规范新增的配置项,适用于所有符合该规范的普通Java Web项目、Spring MVC项目,核心作用是控制Servlet容器启动时,classpath下各jar包中META-INF/web-fragment.xml配置片段的加载规则。
具体作用
- 解决默认加载顺序不稳定问题:未配置该标签时,Servlet容器会随机扫描加载所有jar包中的web-fragment配置,极易因加载顺序异常导致过滤器链顺序错误、组件初始化失败等问题,Spring MVC项目中常见的表现为字符编码不生效、请求上下文获取失败等。
- 强制指定绝对加载顺序:在标签内部通过
<name>标签指定web-fragment的名称后,容器会严格按照列表顺序加载对应配置,所有未出现在列表中的web-fragment配置会被直接忽略,不会生效。 - 空标签
<absolute-ordering/>的特殊作用:如果直接配置空的该标签,代表容器会屏蔽所有第三方jar包自带的web-fragment配置,仅加载当前项目自身web.xml中定义的配置,适合需要完全自主管控所有Web层配置的场景。
配置示例
<absolute-ordering> <!-- 优先加载Spring MVC自带的web-fragment --> <name>spring_web</name> <!-- 再加载自定义业务模块的web-fragment --> <name>biz_fragment</name> </absolute-ordering>
Spring MVC场景注意事项
Spring MVC的spring-web依赖包默认自带名称为spring_web的web-fragment配置,内部已经自动注册了CharacterEncodingFilter、RequestContextListener等基础组件。如果配置<absolute-ordering>时没有将spring_web加入列表,这些默认组件不会生效,需要你手动在web.xml中自行配置。
内容的提问来源于stack exchange,提问作者javaway
相关产品推荐
相关产品推荐

