当前位置:   article > 正文

在SpringAOP中如何获取请求的参数和参数名_aop获取请求参数

aop获取请求参数

前面的切面按自己的逻辑处理,获取请求参数的方法如下:

  1. private Map<String, Object> getFieldsName(JoinPoint joinPoint) throws Exception {
  2. String classType = joinPoint.getTarget().getClass().getName();
  3. String methodName = joinPoint.getSignature().getName();
  4. // 参数值
  5. Object[] args = joinPoint.getArgs();
  6. Class<?>[] classes = new Class[args.length];
  7. for (int k = 0; k < args.length; k++) {
  8. // 对于接受参数中含有MultipartFile,ServletRequest,ServletResponse类型的特殊处理,我这里是直接返回了null。(如果不对这三种类型判断,会报异常)
  9. if (args[k] instanceof MultipartFile || args[k] instanceof ServletRequest || args[k] instanceof ServletResponse) {
  10. return null;
  11. }
  12. if (!args[k].getClass().isPrimitive()) {
  13. // 当方法参数是基础类型,但是获取到的是封装类型的就需要转化成基础类型
  14. // String result = args[k].getClass().getName();
  15. // Class s = map.get(result);
  16. // 当方法参数是封装类型
  17. Class s = args[k].getClass();
  18. classes[k] = s == null ? args[k].getClass() : s;
  19. }
  20. }
  21. ParameterNameDiscoverer pnd = new DefaultParameterNameDiscoverer();
  22. // 获取指定的方法,第二个参数可以不传,但是为了防止有重载的现象,还是需要传入参数的类型
  23. Method method = Class.forName(classType).getMethod(methodName, classes);
  24. // 参数名
  25. String[] parameterNames = pnd.getParameterNames(method);
  26. // 通过map封装参数和参数值
  27. HashMap<String, Object> paramMap = new HashMap();
  28. for (int i = 0; i < parameterNames.length; i++) {
  29. paramMap.put(parameterNames[i], args[i]);
  30. }
  31. return paramMap;
  32. }
  33. private static HashMap<String, Class> map = new HashMap<String, Class>() {
  34. {
  35. put("java.lang.Integer", int.class);
  36. put("java.lang.Double", double.class);
  37. put("java.lang.Float", float.class);
  38. put("java.lang.Long", long.class);
  39. put("java.lang.Short", short.class);
  40. put("java.lang.Boolean", boolean.class);
  41. put("java.lang.Char", char.class);
  42. }
  43. };

 

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

闽ICP备14008679号