springboot- 自定義攔截器

**
 * @Auther: Jhon Li     攔截器
 * @Date: 2018/12/20 12:16
 * @Description:     注意這裏雖然申明瞭@Component 也要在config中的配置類做配置
 *
 * 攔截器既能拿到原始的http的響應和請求,也能拿到真正處理請求的方法的信息,但是拿不到這個方法被調用的時候,被調用的值
 *    缺點  : handler 這個參數 沒辦法拿到方法真正參數的值
 */
@Component
public class TimeInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler) throws Exception {
        System.out.println("preHandle");
        httpServletRequest.setAttribute("starttime",new Date().getTime());

        return true;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
        long starttime =(long) httpServletRequest.getAttribute("starttime");
        System.out.println("postHandle 耗時:"+(new Date().getTime()-starttime));
    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println("afterCompletion");
        long starttime =(long) httpServletRequest.getAttribute("starttime");
        System.out.println("afterCompletion 耗時:"+(new Date().getTime()-starttime));
    }
}

有了@component註解也需要在配置類加入進去,不然米又效果

/**
 * @Auther: Jhon Li
 * @Date: 2018/12/20 12:04
 * @Description:
 */
@Configuration
public class WebConfig   extends WebMvcConfigurerAdapter{
    @Autowired
    private TimeInterceptor timeInterceptor;

    //添加攔截器到配置中
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
 //       registry.addInterceptor(timeInterceptor);
    }

  //  @Bean
    public FilterRegistrationBean filterRegistrationBean(){
        FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
        TimeFilter timeFilter=new TimeFilter();
        filterRegistrationBean.setFilter(timeFilter);
        List<String> urls=new ArrayList<>();
        urls.add("/**"); //指定那些url 過濾
        filterRegistrationBean.setUrlPatterns(urls);
        return filterRegistrationBean;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章