chain.doFilter 在 Filter.doFilter 方法中做什么?

新手上路,请多包涵

Filter.doFilter 方法中,我调用了 chain.doFilter

doFilter doFilter 做什么?不是递归调用吗?

原文由 giri 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 671
2 个回答

Servlet 过滤器是 责任链 设计模式的一种实现。

所有过滤器都是链接的(按照它们在 web.xml 中的定义顺序)。 chain.doFilter() 正在进入链中的下一个元素。链的最后一个元素是目标资源/servlet。

原文由 Bozho 发布,翻译遵循 CC BY-SA 3.0 许可协议

它正在调用 chain 对象的 doFilter 方法,而不是它本身,所以不,它不会递归。

名称 chain 表明您有一系列过滤器,每个过滤器进行一些处理,然后按顺序传递给下一个,因此每个对象都有一个 chain 成员指向序列中的下一个过滤器,它在过滤器执行完自己的处理后被调用。序列中的最后一个可能会有 null 作为 chain 值,或者它自己知道它是序列中的最后一个。

原文由 JaakkoK 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题