当前位置: 首页 > 图灵资讯 > 技术篇> java的Handle对象是什么来的 java handlerinterceptor

java的Handle对象是什么来的 java handlerinterceptor

来源:图灵教育
时间:2023-05-17 11:46:47

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

注意Java在这个接口中的新特性 default 默认已经实现了接口方法

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

@Componentpublic 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 选择重新接口

@Configurationpublic class MyInterceptorConfiguration implements WebMvcConfigurer{    @Autowired    MyInterceptor interceptor;    @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(interceptor).addPathPatterns(”/**/getall");        WebMvcConfigurer.super.addInterceptors(registry);    }}

知识点:addPathPatterns():

/**     - /**: 匹配所有路径     - /admin/**:匹配 /admin/ 下面的所有路径     - /secure/*:只匹配 /secure/user,不匹配 /secure/user/info */截止效果如图所示:
过滤器、拦截器和AOP的区别

过滤器

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

拦截器

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

AOP切片

AOP操作可以横向拦截操作。最大的优点是可以获得执行方法的参数,统一处理方法、常用日志、事务、请求参数安全验证等。

顺序

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