如下图所示,我使用@WebFilter注解的方式定义了一个过滤器,同时定义了过滤器的过滤条件
urlPatterns为/*,可能很多人都知道filter的/*代表所有URL都匹配,但是源码在哪里呢
先打断点看一下调用链
然后跟着调用链慢慢点,看看哪里开始出现了过滤器,这条链路已经出现了,那么说明肯定是在这个之前进行过滤器注册的
往上翻就能看到创建过滤器链条的
然后我们就找到了filter匹配的具体位置,里面有match方法,判断url和urlpattern是否匹配
org.apache.catalina.core.ApplicationFilterFactory#createFilterChain
核心匹配方法,直接断点打到这里进行调试就好
org.apache.catalina.util.FilterUtil#matchFiltersURL(java.lang.String, java.lang.String)