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,重寫相同的方法