欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springMVC获取requestMapping、restful风格中路径的参数

程序员文章站 2022-05-24 18:46:23
springMVC获取requestMapping、restful风格中路径的参数springMVC获取requestMapping、restful风格中路径的参数如何获取requestMapping获取参数springMVC获取requestMapping、restful风格中路径的参数当我们使用spring框架时候,在拦截器或aop时有时会使用到方法中的参数或者是映射地址来帮助我们处理业务逻辑。我们怎么获取他们呢,spring已经给我们封装好了,直接拿来就可以使用。如何获取requestMappi...


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