13|Filter与Listener:如何实现过滤和持续监听?
项目结构
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了在MiniTomcat中实现过滤器(Filter)和监听器(Listener)的过程。通过引入责任链模式,过滤器可以检查和修改请求和返回对象,多个过滤器可以协同工作,监听器则通过监听事件来更好地处理服务器。文章还介绍了项目结构和新增的相关处理方法类,读者可以通过本文了解MiniTomcat中过滤和持续监听的技术特点。 在过滤器的实现过程中,文章详细介绍了Filter、FilterConfig和FilterChain三个接口的定义,以及ApplicationFilterConfig类的实现。通过这些内容,读者可以深入了解MiniTomcat中过滤器的工作原理和实现方式。此外,文章还介绍了如何在MiniTomcat中实现FilterMap类和URLDecoder工具类,以及对StandardContext进行调整,新增了过滤器的配置和处理。 在监听器的实现过程中,文章介绍了如何在BootStrap类中配置了监听器信息,并通过测试文件夹定义了测试类来验证监听器的实现。通过这些内容,读者可以了解MiniTomcat中配置和处理过滤器映射,以及监听器的使用方法。 总的来说,本文通过详细的代码实现和解释,帮助读者深入了解了MiniTomcat中过滤器和监听器的实现原理和技术特点,对于想要深入学习MiniTomcat内部工作原理的开发人员来说,是一篇非常有价值的技术文章。文章内容涵盖了责任链模式、过滤器和监听器的实现原理,以及在MiniTomcat中的具体应用,为读者提供了深入学习和应用的价值。
《手把手带你写一个 MiniTomcat》,新⼈⾸单¥59
全部留言(2)
- 最新
- 精选
- HH🐷🐠抓大放小, 个人觉得核心流程: ApplicationFilterChain.doFilter() --> ApplicationFilterChain.internalDoFilter() --> Filter.doFilter() --> ApplicationFilterChain.doFilter() 一个环状; 入口 StandardWrapperValve , 出口是否有下一个Filter。
作者回复: 很好。 再考虑一下valve之间的次序,和filter之间的次序,是一样的吗?
2024-01-07归属地:广东2 - peter请教老师几个问题: Q1:BootStrap代替了HttpServer吗?为什么这么做? Q2:Filter、Listener可以扩展吗? 比如,用户自定义Filter、Listener,是否支持? Q3:用 ArrayList 存放所有的 filter和listener,有什么考虑? 用Map不行吗? Q4:对于Filter,是FilterChain最后调用servlet吗? 按说不应该由Filter调用servlet,而是由一个更高层的一个东西来调用,类似于控制器或调度器一类的来调用。 Q5:有浏览器上的servlet吗? 我们这里说的servlet,都是运行在后端。我听说有运行在浏览器上的servlet,是否有?
作者回复: HttpServer这个名字含义是服务器,Bootstrap含义是启动,功能的划分,启动的概念更加贴切 Filter/Listener是规范定义的,必须符合规范,只能自己实现不能修改接口 用Arraylist是这种场景:有次序,不需要名字。所以这里用的arraylist 是filterchain最后调用servlet,这是规范规定的 从术语上,servlet是后端,不是浏览器上的,远古时代,浏览器上有applet
2024-01-07归属地:北京