拦截请求



拦截器

package cn.gilight.dms.interceptor;

import cn.gilight.dms.util.StringUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/***

* @ClassName OptLogAspect

* @Description: 接口拦截器

* @Author douxiaoliang

* @Date 2019/7/16

* @Version V1.0

**/

@Component

public class OptLogAspect implements HandlerInterceptor {

    private static Logger logger = LoggerFactory.getLogger(OptLogAspect.class);

@Override

    public boolean preHandle(HttpServletRequest httpServletRequest,

HttpServletResponse httpServletResponse, Object o) {

try {

Map ParameterMap = httpServletRequest.getParameterMap();

String url=httpServletRequest.getRequestURI();

BufferedReader reader = null;

reader = new BufferedReader(new

InputStreamReader(httpServletRequest.getInputStream()));

StringBuffer body = new StringBuffer();

String str = “”;

while ((str = reader.readLine()) != null){

body.append(StringUtils.trimWhitespace(str));

            }

Map reqMap = new HashMap();

Set<Map.Entry<String,String[]>> entry = ParameterMap.entrySet();

Iterator<Map.Entry<String,String[]>> it = entry.iterator();

while (it.hasNext()){

Map.Entry<String,String[]> me = it.next();

String key = me.getKey();

String value = me.getValue()[0];

reqMap.put(key,value);

            }

String queryString = new ObjectMapper().writeValueAsString(reqMap);

logger.info(“url:{}",url);

logger.info(“param:{}",queryString);

logger.info(“body:{}",body);

} catch (IOException e) {

e.printStackTrace();

        }

return true;

    }

@Override

    public void postHandle(HttpServletRequest httpServletRequest,

HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView)

throws Exception {

    }

@Override

    public void afterCompletion(HttpServletRequest httpServletRequest,

HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception

{
    }
}

启动类

package cn.gilight.dms;

import cn.gilight.dms.interceptor.OptLogAspect;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@MapperScan(“cn.gilight.dms.dao”)

//@EnableCaching //缓存支持

@SpringBootApplication

@EnableAspectJAutoProxy(proxyTargetClass=true)

public class DmsApplication implements WebMvcConfigurer {
    private static Logger logger =

LoggerFactory.getLogger(DmsApplication.class);

    public static void main(String[] args) {

SpringApplication.run(DmsApplication.class, args);

logger.info("===启动成功===”);

    }

@Override

    public void addInterceptors(InterceptorRegistry registry) {

//注册自定义拦截器,添加拦截路径和排除拦截路径

registry.addInterceptor(new OptLogAspect())

.addPathPatterns(”/***”)

.excludePathPatterns("/skip/***");

    }
}