26 | Context容器(下):Tomcat如何实现Servlet规范?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
Tomcat实现Servlet规范的关键在于管理Servlet、Filter和Listener。通过Wrapper容器管理Servlet实例,采用延迟加载策略,通过Pipeline-Valve机制调用StandardWrapperValve创建Servlet实例和调用Filter链。Filter链采用责任链模式依次调用Filter的doFilter方法。对于Listener,Tomcat通过Context容器管理并触发相应的监听器方法。文章还提到了Web容器的职能,以及Context组件通过自定义类加载器加载Web应用并实现Servlet规范。建议读者阅读Context容器的源码,以加深理解。同时,读者可以思考Context容器使用CopyOnWriteArrayList和对象数组存储监听器的设计原因。整体而言,本文深入解析了Tomcat如何实现Servlet规范,对于想深入了解Web容器内部工作原理的读者具有很高的参考价值。
《深入拆解 Tomcat & Jetty 》,新⼈⾸单¥68
全部留言(19)
- 最新
- 精选
- -W.LI-属性值变化listener能动态配置,所以用CopyOnWriteArray。生命周期事件listener,不能动态改变没有线程安全问题?
作者回复: 说的对
2019-07-09231 - yang啊啊啊 老师再写一个深入拆解spring 或者springboot 的专栏吧 和tomcat形成兄弟专栏 定价比这个贵2~3倍 您负责写 我们和极客时间的平台负责大卖
作者回复: 😄
2019-08-2139 - calljson请教下老师,serverlet的service方法作用是什么?仅仅是分发请求吗?
作者回复: service方法是留给程序员实现的,实现业务逻辑,比如数据库的增删查改
2019-07-165 - 飞翔老师我需要手动加一个filter,不能用annotation或是xml、我是不是需要调用standardcontext里边的addfilterdef和addfiltermap这两个函数就行了?
作者回复: 对的
2019-07-095 - Nu11PointerEx老师我想问一下,对应的filter是怎么注册到servlet中去的
作者回复: filter是注册到Servlet容器中,Tomcat的StandardContext类中维护了一个Filter列表,所谓的注册就是把你写的filter类实例加到这个列表中。
2019-07-194 - 非想老师您好,看你的文章servlet容器中的三个组件servlet,filter,linstener都是由context容器管理的对吗?
作者回复: filter是wrapper组件管理的
2019-07-0954 - 飞翔private Map<String, FilterDef> filterDefs = new HashMap<>(); 老师 您说 filter放在map里边,由context管理,然后我看 您后边永硕 filter是wrapper管理的 这个不是矛盾嘛
作者回复: Map里存的是filterDef,filter定义,不是filter类实例
2019-07-232 - 飞翔话说 host engine 和context 都有pipline实现的责任链,wrapper没有pipline 而是用filter 实现的责任链是吧
作者回复: wrapper其实也有pipeline,可以这样理解,pipeline是Tomcat内部的责任链,gei内部组件用,而filter是种扩展机制,filter可以是用户定义的。
2019-07-232 - Monday思考题两种数据结构我能区分开来,但是还是回答不上来。。。2019-07-113
- nightmare生命周期相关的类比如session一个用户分配一个,用完了就会销毁,用对象数组,可以适应增删改操作,而属性变化,写不会那么频繁,读取比较频繁2019-07-092