web.xml中的和加载顺序是什么

星降
发布: 2025-12-17 00:41:10
原创
146人浏览过
容器先初始化所有再初始化所有,且均按web.xml中声明顺序执行init;请求处理时按顺序执行filter,再调用匹配的servlet。

web.xml中的<filter>和<servlet>加载顺序是什么

web.xml 中的 <filter></filter><servlet></servlet> 本身没有直接的“加载顺序”依赖,但它们的 初始化顺序 是有明确规则的:容器先初始化所有 <filter></filter>,再初始化所有 <servlet></servlet>

filter 初始化早于 servlet

根据 Servlet 规范,Web 容器(如 Tomcat)在应用启动时按以下顺序处理:

  • 解析 web.xml,收集所有 <filter></filter><servlet></servlet> 声明
  • 按 web.xml 中声明的**先后顺序**,依次调用每个 Filter.init()
  • 再按 web.xml 中声明的**先后顺序**,依次调用每个 Servlet.init()

也就是说,哪怕某个 servlet 在 web.xml 中写在 filter 前面,只要它被声明为 <servlet></servlet>,就不会比任何 <filter></filter> 先 init —— 规范强制要求 filter 优先就绪。

filter-mapping 和 servlet-mapping 决定执行顺序

真正影响请求处理流程的是映射(mapping)配置,而非声明顺序:

jquery图片列表按顺序分类排列图片组效果
jquery图片列表按顺序分类排列图片组效果

jquery图片列表按顺序分类排列图片组效果,点击右上角的按钮,实现图片排列的特殊效果,一般用于商城网站,或者个人网站,个人相册的一个排列,让网页变得更加美观,还是一个很不错的例子。php中文网推荐下载!

jquery图片列表按顺序分类排列图片组效果 185
查看详情 jquery图片列表按顺序分类排列图片组效果
  • <filter-mapping></filter-mapping> 中的 <url-pattern></url-pattern><servlet-name></servlet-name> 决定了哪些请求会经过该 filter
  • <servlet-mapping></servlet-mapping> 决定了哪个 servlet 负责处理匹配的请求
  • 当一个请求同时匹配多个 filter 和一个 servlet 时,执行顺序是:
    → 所有匹配的 filter(按 <filter-mapping></filter-mapping> 在 web.xml 中的顺序)→ 目标 servlet → filter 链逆序执行 doFilter 后续逻辑(即“出”)

可通过 load-on-startup 控制 servlet 初始化时机

虽然 servlet 总是在 filter 之后初始化,但你可以用 <load-on-startup></load-on-startup> 指定 servlet 的相对优先级(仅限 servlet 之间):

  • 值越小越早 init(如 0 比 1 早)
  • 未设置或负数,则在首次请求时才初始化
  • 这个值对 filter 无效 —— filter 默认都是启动时加载,且不支持 load-on-startup

实际开发建议

不必纠结“谁先加载”,重点应放在:

  • 确保 filter 不依赖尚未 init 的 servlet(因为 servlet 此时确实还没 ready)
  • 把公共逻辑(如编码、登录检查、日志)放在 filter,业务逻辑放 servlet
  • 多个 filter 之间注意顺序:比如 CharacterEncodingFilter 应放在其他 filter 前面,才能保证后续 filter 读取参数时编码正确

基本上就这些。规范很明确,行为可预期,关键还是 mapping 配得对不对。

以上就是web.xml中的和加载顺序是什么的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号