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 {

    }
}




posted @ 2018-12-25 19:19  紫月java  阅读(171)  评论(0编辑  收藏  举报