这里我在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)); } }
11
收起
正在回答 回答被采纳积分+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版
- 参与学习 2020 人
- 提交作业 1249 份
- 解答问题 1202 个
2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星