1.@RequestBody的作用
@RequestBody接的参数是一个string化的json,前天JS可以直接使用JSON.stringify(json)这个方法来转化.
注解用于将Controller的方法参数,根据HTTP Request Header的content-Type的内容,通过适当的HttpMessageConverter转换为JAVA类.所以后台无需手动进行json与实体的转换,只要能映射上去(也就是字段名和json的key相对应,value可以匹配上数据类型)那么就可以直接转换,就可以直接使用对象接收参数
使用场景是:POST或者PUT的数据是JSON格式或者XML格式,而不是普通的键值对形式.
application/x-www-form-urlencoded通过表单提交,在servlet实现中,mutipart/form-data和application/x-www-form-urlencoded会被特殊处理,请求参数将被放置于request.paramter,这是一个map。
当我们使用content-type=application/json且后台使用@RequestBody,则无法再从request.paramter中获取请求数据。
后台使用@RequestBody注解,从名称上来看也就是说要读取的数据在请求体里,所以要发post请求
还需要手动设置contentType,contentType:"application/json,明确的告诉服务器发送的内容是json,而默认的contentType是application/x-www-form-urlencoded; charset=UTF-8
4.补充@ResponseBody
@ResponseBody这个注解通常使用在控制层(controller)的方法上,其作用是将方法的返回值以特定的格式写入到response的body区域,进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。