当前位置:   article > 正文

切面(Aspect)获取ServletRequest请求参数和返回值_切面获取请求参数

切面获取请求参数

 可以获取到ServletRequest里面的参数,这里记录一下,以后可能用得着,哈哈哈

  1. /**
  2. * @author wcybaonier
  3. */
  4. @Aspect
  5. @Component
  6. @Slf4j
  7. public class TokenWhiteListAspect {
  8. @Resource
  9. private RedisMapper redisMapper;
  10. /**
  11. * 定义切点Pointcut
  12. * 第一个*号:表示返回类型, *号表示所有的类型
  13. * 第二个*号:表示类名,*号表示所有的类
  14. * 第三个*号:表示方法名,*号表示所有的方法
  15. * 后面括弧里面表示方法的参数,两个句点表示任何参数
  16. */
  17. @Pointcut("execution(* com.idc.*..*Controller.*(..))")
  18. public void executionService() {}
  19. /**
  20. * 方法调用之前调用
  21. * @param joinPoint
  22. */
  23. @Before(value = "executionService()")
  24. public void doBefore(JoinPoint joinPoint){
  25. String requestId = String.valueOf(UUID.randomUUID());
  26. MDC.put("requestId",requestId);
  27. log.info("类名:"+joinPoint.getSignature().getDeclaringTypeName()+
  28. "、方法名: "+joinPoint.getSignature().getName()+"()、====>@Before:请求参数为:{}",Arrays.toString(joinPoint.getArgs()));
  29. // 接收到请求,记录请求内容
  30. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
  31. BodyReaderHttpServletRequestWrapper request = (BodyReaderHttpServletRequestWrapper) attributes.getRequest();
  32. log.info("URL : " + request.getRequestURL().toString());
  33. log.info("HTTP_METHOD : " + request.getMethod());
  34. log.info("IP : " + request.getRemoteAddr());
  35. log.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
  36. log.info("ARGS : " + Arrays.toString(joinPoint.getArgs()));
  37. String token = request.getRequest().getParameterMap().get("token")[0];
  38. log.info("token------------"+token);
  39. String obj = redisMapper.getObject("idc_token::" + token);
  40. if (obj == null) {
  41. // 登陆过期
  42. log.error("token 验证失败,请重新登陆!!!");
  43. log.info("token 验证失败,请重新登陆!!!");
  44. throw new CommonRuntimeException("token 验证失败,请重新登陆!!!");
  45. }
  46. }
  47. /**
  48. * 方法之后调用
  49. * @param joinPoint
  50. * @param returnValue 方法返回值
  51. */
  52. @AfterReturning(pointcut = "executionService()",returning="returnValue")
  53. public void doAfterReturning(JoinPoint joinPoint,Object returnValue){
  54. log.info("类名:"+joinPoint.getSignature().getDeclaringTypeName()+
  55. "、方法名: "+joinPoint.getSignature().getName()+"()、====>@Before:请求参数为:{}",Arrays.toString(joinPoint.getArgs()));
  56. // 处理完请求,返回内容
  57. MDC.clear();
  58. }
  59. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/342119
推荐阅读
相关标签
  

闽ICP备14008679号