@requestBody @responseBody配置要点

来源:互联网 发布:淘宝服饰店铺推荐 编辑:程序博客网 时间:2024/05/17 23:41

@requestBody @responseBody配置要点

原文链接:http://www.cnblogs.com/qq78292959/p/3760651.html

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的配置文件

增加<mvc:annotation-driven />配置


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. 加上<mvc annotation-driven>

0 0