@ModelAttribute 和 @RequestBody的区别

174 阅读1分钟

使用@ModelAttribute注解的实体类接收前端发来的数据格式需要为"x-www-form-urlencoded",@RequestBody注解的实体类接收前端的数据格式为JSON(application/json)格式。(若是使用@ModelAttribute接收application/json格式,虽然不会报错,但是值并不会自动填入)

RequestParam

  1. get请求的 requestHeaders 中 content-type 这个字段,使用 form-data 表单形式携带参数请求;

  2. Spring中的@RequestParam注解接收的参数大多数场景是来自requestHeaders中,即请求头,也就是url中,格式为:http://localhost:8080?name=yc&age=23,由于 url 长度有限制,所以参数需要限制数量和值得长度

1543609-20190711192147015-1896127085.png

RequestBody

  1. post请求的requestHeaders请求头中有content-type字段,一般用来处理:applicatin/json格式的参数;
  2. Spring中的@RequestBody注解是用来接收请求体中的参数数据,即requestBody请求体中,故不受参数数据长度的限制;

1543609-20190711195647145-1083582365.png