java过滤器和spring拦截器执行流程

  权限认证有三块(1)过滤器 (2)拦截器 (3)单独写代码逻辑处理,函数调用等。

只有过滤器运行逻辑:,
过滤器中的内容->doFilter->doFilter后面的逻辑

过滤器中的内容
############TestFilter1 doFilterInternal executed############
############TestFilter2 doFilterInternal executed############
doFilter
############TestFilter2 doFilter after############
############TestFilter1 doFilter after############
过滤器中的内容
############TestFilter1 doFilterInternal executed############
############TestFilter2 doFilterInternal executed############
doFilter
############TestFilter2 doFilter after############
############TestFilter1 doFilter after############

-------------------------------------------------------------------------------------------------------------------------------


有过滤器,又有拦截器,执行逻辑如下:
过滤器中的内容->拦截器preHandle-执行控制器的内容逻辑->拦截器postHandle->拦截器afterCompletion->过滤器doFilter->doFilter->doFilter后面的逻辑->
过滤器:
############TestFilter1 doFilterInternal executed############
############TestFilter2 doFilterInternal executed############
拦截器preHandle:
************TestInterceptor preHandle executed**********
过了拦截器preHandle后,执行controller层逻辑:
---------TestController executed--------
拦截器postHandle:
************TestInterceptor postHandle executed**********
拦截器afterCompletion:
************TestInterceptor afterCompletion executed**********
过滤器doFilter 验证后的逻辑:
############TestFilter2 doFilter after############
############TestFilter1 doFilter after############
过滤器:
############TestFilter1 doFilterInternal executed############
############TestFilter2 doFilterInternal executed############
过了拦截器preHandle后,执行controller层逻辑:
************TestInterceptor preHandle executed**********
过了拦截器preHandle后,执行controller层逻辑:
---------TestController executed--------
拦截器postHandle:
************TestInterceptor postHandle executed**********
拦截器afterCompletion:
************TestInterceptor afterCompletion executed**********
过滤器doFilter 验证后的逻辑:
############TestFilter2 doFilter after############
############TestFilter1 doFilter after############

  

结论:
过滤器在拦截器之前,过滤器是全局的。过滤器的规则完全依赖于url-pattern,如果路由规则不符合url-pattern,不走相关过滤器。如果想让过滤器失效,需要想办法绕过url-pattern规则,比如说url-pattern的配置不当可以被绕过。
 
posted @ 2022-08-26 10:46  飘渺红尘✨  阅读(373)  评论(0编辑  收藏  举报
Title