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文件,注释掉 <!-- <charset>UTF-8</charset> -->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值