这里我在url里面的参数,aop的webLogAspect类也没有获取到啊?
package com.imooc.mall.filter;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
/**
* 描述: 打印请求和响应信息
*/
@Aspect
@Component
public class WebLogAspect {
private final Logger log = LoggerFactory.getLogger(WebLogAspect.class);
// 拦截点
@Pointcut("execution(public * com.imooc.mall.controller.*.*(..))")
public void webLog(){
}
// 请求信息
@Before("webLog()")
public void doBefore(JoinPoint joinPoint){
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
log.info("URL:" + request.getRequestURL().toString());
log.info("HTTP_METHOD:" + request.getMethod());
log.info("IP:" + request.getRemoteAddr());
log.info("CLASS_METHOD:"+joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
log.info("ARGS:" + Arrays.toString(joinPoint.getArgs()));
}
// 响应信息
@AfterReturning(returning = "res",pointcut = "webLog()")
public void doReturning(Object res) throws JsonProcessingException {
log.info("RESPONSE:" + new ObjectMapper().writeValueAsString(res));
}
}

12
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小蓝
2023-09-07 11:10:21
同学你好,从同学的截图中看到,参数id实际上是已经获取到了的。
同学的疑问是否在日志中URL字段中,只有“http://localhost:8080/getUser”而没有拼接的“id=1”?
在请求中,URL的定义是统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。而这个定位中是不包含参数的,只不过在GET请求时,将参数拼接在URL的后面了。虽然拼接了,但不代表参数就是URL的一部分了。所以在解析的时候,URL和参数是单独解析的,也就是日志中只有URL,而参数单独存储在id中了。
祝学习愉快~
Java工程师 2024版
- 参与学习 2053 人
- 提交作业 1490 份
- 解答问题 1316 个
2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星