SpringBoot17 之Interceptor

實現自定義攔截器只須要3步: ide

一、建立咱們本身的攔截器類並實現 HandlerInterceptor 接口。 post

二、建立一個Java類繼承WebMvcConfigurerAdapter,並重寫 addInterceptors 方法。 spa

二、實例化咱們自定義的攔截器,而後將對像手動添加到攔截器鏈中(在addInterceptors方法中添加)繼承

public class MyInterceptor1 implements HandlerInterceptor { 接口

    @Override資源

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)io

            throws Exception {class

        System.out.println(">>>MyInterceptor1>>>>>>>在請求處理以前進行調用(Controller方法調用以前)"); 渲染

        return true;// 只有返回true纔會繼續向下執行,返回false取消當前請求model

    }

    @Override

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,

            ModelAndView modelAndView) throws Exception {

        System.out.println(">>>MyInterceptor1>>>>>>>請求處理以後進行調用,可是在視圖被渲染以前(Controller方法調用以後)");

    }

    @Override

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)

            throws Exception {

        System.out.println(">>>MyInterceptor1>>>>>>>在整個請求結束以後被調用,也就是在DispatcherServlet 渲染了對應的視圖以後執行(主要是用於進行資源清理工做)");

    }

 }

public class MyInterceptor2 implements HandlerInterceptor {

    @Override

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

            throws Exception {

        System.out.println(">>>MyInterceptor2>>>>>>>在請求處理以前進行調用(Controller方法調用以前)");

        return true;// 只有返回true纔會繼續向下執行,返回false取消當前請求

    }

 

    @Override

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,

            ModelAndView modelAndView) throws Exception {

        System.out.println(">>>MyInterceptor2>>>>>>>請求處理以後進行調用,可是在視圖被渲染以前(Controller方法調用以後)");

    } 

    @Override

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)

            throws Exception {

        System.out.println(">>>MyInterceptor2>>>>>>>在整個請求結束以後被調用,也就是在DispatcherServlet 渲染了對應的視圖以後執行(主要是用於進行資源清理工做)");

    }

}

@Configuration

public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {

@Override

public void addInterceptors(InterceptorRegistry registry) {

// 多個攔截器組成一個攔截器鏈

// addPathPatterns 用於添加攔截規則

// excludePathPatterns 用戶排除攔截

registry.addInterceptor(new MyInterceptor1()).addPathPatterns("/**");

registry.addInterceptor(new MyInterceptor2()).addPathPatterns("/**");

super.addInterceptors(registry);

}

}

相關文章
相關標籤/搜索