拦截器(Inteceptor)和过滤器(Filter)的使用
主要讲解下关于两者的使用,具体原理网上有很多讲解的,在这就不说废话了,主要展示注解实现
1.Interceptor拦截器实现
/**
* @Author: ***
* @Date: ***
* @Description:在请求体中加入流水号参数(加入流水号跟踪日志)
*/
@Configuration
public class SerialInterceptor implements HandlerInterceptor {
/**
* 拦截后做的逻辑处理
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String s = ValidateCodeUtil.generateSerialNumberCode();
reflectSetHeader(request, "serialNumber", s);
return true;
}
/**
* 在请求头中加入参数的方法
*/
private void reflectSetHeader(HttpServletRequest request, String key, String value) {
Class<? extends HttpServletRequest> requestClass = request.getClass();
LogUtil.info("request实现类={}", requestClass.getName());
try {
Field request1 = requestClass.getDeclaredField("request");
request1.setAccessible(true);
Object o = request1.get(request);
Field coyoteRequest = o.