Java interceptor拦截器

1. 编写拦截器组件,实现 HandlerInterceptor 接口

注意此接口中的方法使用了Java新特性 default 默认已实现了接口方法

顾在Idea中Alt+Enter快捷键无法弹出实现的窗口,可以通过 Ctrl+O 快捷键选择重写的接口

复制代码
@Component
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("======preHandle=========");
        //return HandlerInterceptor.super.preHandle(request, response, handler);
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("======postHandle=========");
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("======afterCompletion=========");
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}
复制代码

 

2. 编写配置组件,实现接口 WebMvcConfigurer

同样它默认实现了接口,顾使用Ctrl+O 来选择要重新的接口

复制代码
@Configuration
public class MyInterceptorConfiguration implements WebMvcConfigurer
{
    @Autowired
    MyInterceptor interceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(interceptor).addPathPatterns("/**/getall");
        WebMvcConfigurer.super.addInterceptors(registry);

    }
}
复制代码
知识点:addPathPatterns():
1
2
3
4
5
6
7
/**
 
     - /**: 匹配所有路径
     - /admin/**:匹配 /admin/ 下的所有路径
     - /secure/*:只匹配 /secure/user,不匹配 /secure/user/info
 
 */拦截效果如图:

 

 

过滤器、拦截器、AOP的区别

 

过滤器

过滤器可以拦截到方法的请求和响应(ServletRequest request, SetvletResponse response),并对请求响应做出响应的过滤操作,比如设置字符编码、鉴权操作。

 

拦截器

拦截器可以在方法之前(preHandle)和方法执行之后(afterCompletion)进行操作,回调操作(postHandle),可以获取执行的方法的名称,请求(HttpServletRequest)。

 

AOP切片

AOP操作可以对操作进行横向的拦截,最大的优势在于可以获取执行方法的参数,对方法进行统一的处理,常见使用日志,事务,请求参数安全验证等。

 

顺序

请求->>过滤器->>拦截器-->Aspect->>拦截器->>过滤器->>响应

 

 


 

 


 

posted @   王叫兽  阅读(302)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示