Springboot中AOP获取接口的请求参数

Springboot中AOP获取接口的请求参数

特别是GET参数的获取

public class LogAop {
    //切入点:待增强的方法
    @Pointcut("execution(* com.fan.packing.controller.*.*(..))")
    //切入点签名
    public void log(){
        System.out.println("pointCut签名。。。");
    }
    //前置通知
    @Before("log()")
    public void deBefore(JoinPoint jp) throws Throwable {
        // 接收到请求,记录请求内容
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        // 记录下请求内容
        //System.out.println("URL : " + request.getRequestURL().toString());
        //System.out.println("HTTP_METHOD : " + request.getMethod());
        //System.out.println("CLASS_METHOD : " + jp);
        //System.out.println("ARGS : " + Arrays.toString(jp.getArgs()));
        log.warn(request.getMethod() + " ------------------");
        log.warn("URL : " + request.getRequestURL().toString());
        if(request.getMethod().equals("POST")){ // POST是json格式,可以直接通过jp.getArgs()拿到
            log.warn("ARGS : " + Arrays.toString(jp.getArgs()));
        }else { //GET参数不是json格式,需要使用getParameterMap获取参数
            Map<String, String[]> parameterMap = request.getParameterMap();//获取全部Parameter参数
            String param = "";
            for(String key : parameterMap.keySet()){
                String[] value = parameterMap.get(key);
//                System.out.println(key+":"+value[0]);
                param += key+":"+value[0]+";";
            }
            log.warn("ARGS : " + param);
        }
    }
}

附带logbackwindowscmd控制台上运行中文乱码问题解决:

因为springboot默认使用的logback而不是log4j的原因,所以修改resource文件夹下的 logback-spring.xml文件,注释掉

你可能感兴趣的:(java,spring,boot,java,后端)