SpringBoot 拦截器Intercepto的创建与基本使用

介绍

拦截器和过滤器的功能都差不多,拦截器是SpringBoot的,而且过滤器是Servlet的
SpringBoot过滤器

拦截器-过滤器 执行顺序

发起请求-》过滤器-》拦截器-》接口


创建拦截器

实现HandlerInterceptor 的接口,并且实现他都三个方法

  • preHandle: 进入controller前执行 true放行 false不放行
  • postHandle: controller运行完成后执行
  • afterCompletion: 视图渲染完毕后执行 最后执行的方法

三个方法都默认实现,按要求保留即可

@Component //交给IOC容器管理
public class RequestInterceptor  implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //进入controller前执行 true放行 false不放行


		//拦截到执行的操作

          //  return HandlerInterceptor.super.preHandle(request, response, handler);
          return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //controller运行完成后执行
       // HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //视图渲染完毕后执行 最后执行的方法
      //  HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
    
}

注册拦截器(配置类)

配置类继承接口WebMvcConfigurer ,并实现他都addInterceptors方法,

@Configuration //表示该类为配置类
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private RequestInterceptor interceptor;
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(interceptor).addPathPatterns("/**");
        //拦截所有的请求


//        registry.addInterceptor(interceptor)
//                .addPathPatterns("/user")//需要拦截的请求
//                .excludePathPatterns("/login");//不需要拦截的请求
       
    }
}

拦截路径的配置

  • /*: 拦截所有一级路径,如:/login 或 /user …
  • /**: 拦截任意路径,如:/login 或 /user/1 或 /deletes/user/1
  • /user/*: 拦截/user的任意一级路径 如:/user/login,不可以拦截二级如:/user/deletes/2
  • /user/**: 拦截/user下的任意路径

你可能感兴趣的:(Spring,Boot,spring,boot,后端,java,青少年编程,spring,eclipse,maven)