您的位置:首页 > 编程语言 > Java开发

SpringMvc返回报文形式的控制-验证方法: JSON or HTML or XML

2017-08-02 17:10 483 查看





首先,请求通过accept请求头声明了支持的返回格式

然后,框架根据该请求头和代码实现(注解)选择了对应的MessageConverter处理返回!

一、验证过程

1、返回html

1.1、请求组装

http://10.110.20.146/cloud-web/version-info

请求头:Accept=text/html; charset=utf-8

1.2、请求报文

GET /cloud-web/version-info HTTP/1.1
Host: 10.110.20.146
Accept: text/html; charset=utf-8
Cache-Control: no-cache
Postman-Token: 9c41ee47-66df-cdbc-ff6f-1d581837b9c1

1.3、执行过程



2、返回json

2.1、请求组装

http://10.110.20.146/cloud-web/version-info

Accept=application/json; charset=UTF-8

2.2、请求报文

GET /cloud-web/version-info HTTP/1.1
Host: 10.110.20.146
Accept: application/json; charset=UTF-8
Cache-Control: no-cache
Postman-Token: e8507a90-eaa7-c339-c78c-a24e51d9aeb6

2.3、执行过程



3、返回xml

3.1、请求组装

http://10.110.20.146/cloud-web/version-info

请求头:Accept=application/xml; charset=utf-8

3.2、请求报文

GET /cloud-web/version-info HTTP/1.1
Host: 10.110.20.146
Accept: application/xml
Cache-Control: no-cache
Postman-Token: ac2859b4-c38a-2b20-e432-f9f20dc8486f

3.3、执行过程



二、后台实现

1、返回xml

返回xml要满足两个条件:



请求头中包含了application/xhtml+xml



1.1、开发阶段:JavaBean:@XmlRootElement注解



1.2、[b]开发阶段:Controller:[/b] @ResponseBody注解和返回Java对象



1.3、请求阶段:HTTP Request Header中的Accept属性



2、如果要返回json

开发阶段:引入json的相关jar包



或者



2.1、开发阶段:JavaBean:无@XmlRootElement注解





[b]2.2、开发阶段:Controller返回Java对象[/b]



和getEmployeeXml()相比,这里返回对象变成了Employee,

因为Employee类上没有@XmlRootElement注解,所以Spring不会选择Jaxb2RootElementHttpMessageConverter。

又因为Accept属性中包含了*/*,表示接受任意格式返回数据,所以GsonHttpMessageConverter的canWrite()方法返回true.这样Spring就会选择MappingJackson2HttpMessageConverter或者GsonHttpMessageConverter来进行数据转换。

2.3、请求阶段:HTTP Request Header中的Accept属性

[b][b]经过以上方式,返回结果就[b]可以自动被转换成对应的XML或者JSON数据[/b][/b][/b]

[b][b][b]三、测试用例[/b][/b][/b]

[b][b][b]

[/b][/b][/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐