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

2022-09-01 00:31:43

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

里面在做什么?这不是递归调用吗?doFilterdoFilter


答案 1

Servlet Filters 是责任链设计模式的实现。

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


答案 2

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

该名称表明您有一个筛选器序列,每个筛选器执行一些处理,然后按顺序传递给下一个筛选器,因此每个对象都有一个成员指向序列中的下一个筛选器,该成员在筛选器执行自己的处理后被调用。然后,序列中的最后一个可能具有值,或者它自己知道它是序列中的最后一个。chainchainnullchain


推荐