大家好,又见面了,我是你们的朋友全栈君。
1.简介
@RequestBody
作用:
1) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
2) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
使用时机:
1) GET、POST方式提时, 根据request header Content-Type的值来判断:
A.application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
B.multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
C.其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);
2) PUT方式提交时, 根据request header Content-Type的值来判断:
A.application/x-www-form-urlencoded, 必须;
B.multipart/form-data, 不能处理;
C.其他格式, 必须;
说明:
request的body部分的数据编码格式由header部分的Content-Type指定;
requestBody接收的是JSON对象的字符串,AJAX传递数据使用的是JSON,所以需要使用JSON.stringify()转化为JSON字符串,从而被requestBody接收。
@ResponseBody
作用:
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
2.Spring MVC的配置文件
增加配置
3.需要的jar包
在Maven中增加依赖
Spring-webmvc 和 jsckson-mapper-asl
注:在jsp中使用ajax提交时出现了下面的问题: 415 (Unsupported Media Type), 可能出现的原因如下:
1. dataParam 格式错误,不符合json字符串规范
2. dataParam 参数不能绑定到控制器方法的参数上面,不是一一对应
3. 没有在ajax提交时设置contentType
contentType指的是前台传递到后台的格式,dataType指的是由后台传到前台的格式
4. jackson的jar包不对或者不全:
不应该使用org.codehaus.jackson下面的jackson.jar, 应该使用com.fasterxml.jackson.core下面的jackson-core和jackson-databind 的jar包
5. 加上
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135785.html原文链接:https://javaforall.cn