spring三个取值注解总结

128 阅读1分钟

@RequestParam,@RequestBody,@PathVariable三个spring注解的区别

@RequestParam 和 @PathVariable 注解是用于从request中接收请求的,他们接受的都是get请求的参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @PathVariable 是从一个URI模板里面来填充

一、@RequestParam

该注解适用于http的url中里通过?方式向后台发送请求,后台controller中接收前台参数的方式,比如如下的url:

http://localhost:8080/springmvc/hello/101?param1=10&param2=20

代码中可以用
   @RequestMapping("/hello")
public String getDetails(
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
       //
}

这种方式获取

@RequestParam 支持如下的参数:
defaultValue:如果本次请求没有携带这个参数,或者参数为空,那么就会启用默认值
name:绑定本次参数的名称,要跟URL上面的一样
required:false表明这个参数是不是必须的,true表示必须的,如果在true的情况下,地址中没有此参数,将会报400错误
value:跟name一样的作用,是name属性的一个别名

二、@PathVariable

该注解适用于http的url使用restful方式,后台controller中接收前台参数的方式,比如如下的url:

http://localhost:8080/springmvc/hello/101?param1=10&param2=20

代码中可以用
  @RequestMapping("/hello/{id}")
public String getDetails(@PathVariable(value="id") String id,
      @RequestParam(value="param1", required=true) String param1,
      RequestParam(value="param2", required=false) String param2){
      //
}

这种方式获取

三、@RequestBody

一般是post请求的时候才会使用这个请求,把参数丢在requestbody里面,使用实体类接收
   @RequestMapping("/hello")
public String getDetails(@RequestBody(value="id")•User user,HttpServletRequest request){
       //