07springboot拦截器
springboot拦截器
2.0之前的拦截器(WebMvcConfigurerAdapter)
- 使用注解 @Configuration配置拦截器
- 继承WebMvcConfigurerAdapter
- 重写addInterceptors 添加需要的拦截器地址
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {//或者在主类上及继承
    //-------------------------------------------------------------------------------
    /**
    使用的时候才定义拦截器
    */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        /**
         * 拦截器按照顺序执行
         */
        registry.addInterceptor(new TwoInterceptor()).addPathPatterns("/two/**")
                                                     .addPathPatterns("/one/**");//new TwoInterceptor()定义拦截器
        registry.addInterceptor(new OneInterceptor()).addPathPatterns("/one/**");
        super.addInterceptors(registry);
    }
    //-------------------------------------------------------------------------------
    //或者先定义后使用:
    @Bean  //定义i=
    public LoginInterceptor loginInterceptor() {
        return new LoginInterceptor();
    }
    @Override //配置使用
    public void addInterceptors(InterceptorRegistry registry) {
        // addPathPatterns 用于添加拦截规则
        // excludePathPatterns 用户排除拦截
        // 登录拦截(登录,退出的去掉)
        registry.addInterceptor(loginInterceptor()).addPathPatterns("/ucareschedule/**")  //添加拦截
                .excludePathPatterns("/ucareschedule/manager/login")
                .excludePathPatterns("/index.html/");
    }
    //-------------------------------------------------------------------------------
}2.0之后的拦截器
主类设置继承类
implements WebMvcConfigurer
//拦截设置一致具体拦截类
public class OneInterceptor implements HandlerInterceptor  {//或extends HandlerInterceptorAdapter
    /**
     * 在请求处理之前进行调用(Controller方法调用之前)
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
        System.out.println("被one拦截,放行...");
        return true;//true继续,false,拦截校验失败
    }
    /**
     * 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView mv)throws Exception {
    }
    /**
     * 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行
     * (主要是用于进行资源清理工作)
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception ex)throws Exception {
    }
}
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号