springMVC获取requestMapping、restful风格中路径的参数
springMVC获取requestMapping、restful风格中路径的参数
springMVC获取requestMapping、restful风格中路径的参数
当我们使用spring框架时候,在拦截器或aop时有时会使用到方法中的参数或者是映射地址来帮助我们处理业务逻辑。我们怎么获取他们呢,spring已经给我们封装好了,直接拿来就可以使用。
如何获取requestMapping
request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE)
@GetMapping("getUser/{id}") public Student getUser2(@PathParam("id") String id,HttpServletRequest request){ System.out.println(request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE)); Student student = new Student(11,"zhangsan",1,2); return student; }
result:
/getUser/{id}
此处代码主要是用于拦截器、aop使用,获取映射路径,此方法的好处是如果是restful风格的api也会返回最原始的requestMapping。
获取参数
获取参数应该很简单,在拦截器获取sop中我们有时会获取参数值,根据值不值处理不同的逻辑。
现在有个问题,当使用request.getParameterMap()并不能获取restful中path的参数,那么我们如何获取呢
http://127.0.0.1:8080/getUser/1?nama=zhangsan
@GetMapping("getUser/{id}") public Student getUser2(@PathVariable("id") String id, HttpServletRequest request){ System.out.println(id); Map<String, String[]> parameterMap = request.getParameterMap(); System.out.println("body中参数:" + new Gson().toJson(parameterMap)); Map attribute = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE); System.out.println("restful中path参数:" + attribute); Student student = new Student(11,"zhangsan",1,2); return student; }
result:
body中参数:{"nama":["zhangsan"]} restful中path参数:{id=1}
可以看到我们需要结合HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE来获取参数信息。
此时我们只知道参数的key时,我们先根据 request.getParameter(“name”)取值,然后再根据path中取值。
本文地址:https://blog.csdn.net/qq_37904966/article/details/108038728
上一篇: 详解Nginx配置多站点需要踩的坑
下一篇: 数据结构算法(二叉树遍历方法)
推荐阅读
-
springMVC获取requestMapping、restful风格中路径的参数
-
详解angular中通过$location获取路径(参数)的写法
-
获取url路径中的参数
-
SpringMVC 中的RestFul风格
-
SPRINGMVC中的RESTFUL风格
-
@RequestMapping、@Pathvariable的使用获取url中携带的参数
-
SpringMVC中@RequestMapping处理请求参数的@RequestParam注解
-
基于SpringMVC中的路径参数和URL参数实例
-
springMVC获取requestMapping、restful风格中路径的参数
-
详解angular中通过$location获取路径(参数)的写法