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
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论