Springboot2.x 攔截器

一,單個攔截器,實現接口  HandlerInterceptorjava

@Component
public class MyInterceptor1 implements HandlerInterceptor {

    /**
     * 進入controller層以前攔截請求
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("============1111111111---preHandle============");
        return true;
    }

    /**
     * 處理請求完成後視圖渲染以前的處理操做
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
        System.out.println("============1111111111---postHandle ============");
    }
    /**
     * 視圖渲染以後的操做
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
        System.out.println("============1111111111---afterCompletion============");
    }

}

  新建類  InterceptorConfig 實現 WebMvcConfigurer ide

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Resource
    private MyInterceptor1 myInterceptor1;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加要攔截的url                                攔截的路徑                                    放行的路徑
        registry.addInterceptor(myInterceptor1).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");
    }
}

 

 

二 ,多個攔截器post

咱建個攔截器 2url

@Component
public class MyInterceptor2 implements HandlerInterceptor {

    /**
     * 進入controller層以前攔截請求
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        System.out.println("============2222222---preHandle============");

        return true;
    }

    /**
     * 處理請求完成後視圖渲染以前的處理操做
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
        System.out.println("============2222222---postHandle ============");
    }

    /**
     * 視圖渲染以後的操做
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
        System.out.println("============2222222---afterCompletion============");
    }

}

  

而後在 InterceptorConfig 添加配置日誌

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Resource
    private MyInterceptor1 myInterceptor1;
    @Resource
    private MyInterceptor2 myInterceptor2;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加要攔截的url               1                 攔截的路徑                                    放行的路徑
        registry.addInterceptor(myInterceptor1).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");
        //添加要攔截的url                2
        registry.addInterceptor(myInterceptor2).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");
    }
}

  如今看看兩個攔截器執行順序blog

如今把 攔截器1和2的位置換下接口

 

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Resource
    private MyInterceptor1 myInterceptor1;
    @Resource
    private MyInterceptor2 myInterceptor2;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加要攔截的url                2
        registry.addInterceptor(myInterceptor2).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");
        //添加要攔截的url               1                 攔截的路徑                                    放行的路徑
        registry.addInterceptor(myInterceptor1).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");

    }
}

  而後順序就變了,日誌以下io

完了。class

相關文章
相關標籤/搜索