首先,实现Spring的WebMvcConfiguer接口,覆写addInterceptors()方法,注册拦截器。
package com.sumavision.crawler.common.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @auther: zhangzhaoyuan
* @date: 2018/11/28
* @description:
*/
@Configuration
public class FmcWebMvcConfig implements WebMvcConfigurer {
@Bean
public FmcHttpInterceptor httpInterceptor() {
return new FmcHttpInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(httpInterceptor()).addPathPatterns("/**");
}
}
实现Spring的HandlerInterceptorAdapter抽象类,完成拦截逻辑。
package com.sumavision.crawler.common.config;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* @auther: zhangzhaoyuan
* @date: 2018/11/28
* @description:
*/
@Slf4j
public class FmcHttpInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//获得请求url
String url = request.getRequestURI();
//获取json传输参数
Map<String, String[]> map = request.getParameterMap();
log.info("请求开始,url:{},params:{}", url, JSON.toJSONString(map));
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
super.afterCompletion(request, response, handler, ex);
}
@Override
public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
super.afterConcurrentHandlingStarted(request, response, handler);
}
}