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);
}
}
}
附带logback
在windows
的cmd
控制台上运行中文乱码问题解决:
因为springboot默认使用的logback而不是log4j的原因,所以修改resource
文件夹下的 logback-spring.xml
文件,注释掉 <!-- <charset>UTF-8</charset> -->