天天看點

SpringBoot項目中配置攔截器

1.寫一個Interceptor繼承HandlerInterceptorAdapter

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

@Component
public class LoginInterceptor extends HandlerInterceptorAdapter {

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    	//這裡寫你要攔截的參數,通過request擷取前端傳過來的資料
        return true;
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
    }

    public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    }
}

           
這裡也可以實作HandlerInterceptor接口,重寫它的三個方法,不過使用HandlerInterceptorAdapter比較靈活,因為它是抽象類,我們可是任意實作三個方法

2.實作攔截器後還要将攔截器添加到配置類中,這樣才能使用攔截器

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class GmallWebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    	//這裡可以配置攔截所有方法
        registry.addInterceptor(loginInterceptor).addPathPatterns("/**");
        
    }
}
           
這裡也可以繼承WebMvcConfigurationSupport,重寫相同的方法

繼續閱讀