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

首先,请求通过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、开发阶段:Controller: @ResponseBody注解和返回Java对象

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

2、如果要返回json
开发阶段:引入json的相关jar包

或者

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

2.2、开发阶段:Controller返回Java对象

和getEmployeeXml()相比,这里返回对象变成了Employee,
因为Employee类上没有@XmlRootElement注解,所以Spring不会选择Jaxb2RootElementHttpMessageConverter。
又因为Accept属性中包含了*/*,表示接受任意格式返回数据,所以GsonHttpMessageConverter的canWrite()方法返回true.这样Spring就会选择MappingJackson2HttpMessageConverter或者GsonHttpMessageConverter来进行数据转换。
2.3、请求阶段:HTTP Request Header中的Accept属性
经过以上方式,返回结果就可以自动被转换成对应的XML或者JSON数据
三、测试用例

SpringMvc返回报文形式的控制-验证方法: JSON or HTML or XML的更多相关文章
- 调用中行接口针对返回报文(xml形式)做相关处理
最近在对接中行银行接口,在获取返回报文的时候遇到一些问题,现在在这里做个总结 TIP: 在返回报文之前,要对前置机的URL请求,在这期间遇到一个坑,还是通过查看日志才发现问题 在填写转账信息的时候要求 ...
- SpringMVC返回void的三大方法
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons) 在是springMVC的void的返回值中,有三大方法可以运行,个人觉得 ...
- 基于 Annotation 拦截的 Spring AOP 权限验证方法
基于 Annotation 拦截的 Spring AOP 权限验证方法 转自:http://www.ibm.com/developerworks/cn/java/j-lo-springaopfilte ...
- SpringMVC 返回 html 视图页面,SpringMVC与Servlet,Servlet重定向与转发
1. SpringMVC与Servlet的关系 SpringMVC框架是建立在Servlet之上的,提供各种功能,各种封装,各种方便的同时,它一点儿也没有限制Servlet,我们完全可以在Spring ...
- Spring Security验证流程剖析及自定义验证方法
Spring Security的本质 Spring Security本质上是一连串的Filter, 然后又以一个独立的Filter的形式插入到Filter Chain里,其名为FilterChainP ...
- SpringMVC返回Json,自定义Json中Date类型格式
http://www.cnblogs.com/jsczljh/p/3654636.html —————————————————————————————————————————————————————— ...
- SpringMVC 返回自定义属性名
SpringMVC 返回的属性名默认是小写驼峰形式的实体对象中的属性名,如 userID 属性名它会返回 userId. 如果接口方式之前已经定下来,这样前端按原来的方式取数据会读取失败的,那有没有方 ...
- SpringMVC使用@Valid注解进行数据验证
SpringMVC使用@Valid注解进行数据验证 from:https://blog.csdn.net/zknxx/article/details/52426771 我们在做Form表单提交的时 ...
- 基于 Token 的身份验证方法
使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录.大概的流程是这样的: 客户端使用用户名跟密码请求登录 服务端收到请求,去验证用户名与密码 验证成功后,服务端会签发一个 Toke ...
随机推荐
- 这个选项决定pe中能不能看见系统盘
这个选项决定pe中能不能看见系统盘,这是小米的电脑.
- 如何写对kubernetes的模板文件
kubernetes的模板配置文件随着版本更迭也会有相应的调整,正确配置模板关键字的方式是参考版本发布的doc,如下图 在docs\api-reference下面有不同功能的API目录,如下图 各个A ...
- 51ak带你看MYSQL5.7源码1:main入口函数
从事DBA工作多年 MYSQL源码也是头一次接触 尝试记录下自己看MYSQL5.7源码的历程 目录: 51ak带你看MYSQL5.7源码1:main入口函数 51ak带你看MYSQL5.7源码2:编译 ...
- spring Boot+spring Cloud实现微服务详细教程第一篇
前些天项目组的大佬跟我聊,说项目组想从之前的架构上剥离出来公用的模块做微服务的开发,恰好去年的5/6月份在上家公司学习了国内开源的dubbo+zookeeper实现的微服务的架构.自己平时对微服务的设 ...
- Webpack执行命令参数详解
一.概述前面的章节我们讲解了webpack的安装.webpack.config.js的 基本配置.webpack执行命名以及require方法的使用,不 知道大家有没有发现,当我们每次修改或者新增一个 ...
- dubbo + dubbo-admin 入门级demo
整个示例中,除了dubbo的服务提供者和消费者是在windows里跑着,其他的所有程序都是在centos中. 1.准备环境 windows中jdk和java ide下载. 在centos中,创建软件安 ...
- 手写ButterKnife
开发中使用注解框架可以极大地提高编码效率,注解框架用到的技术可以分为两种,运行时注解跟编译时注解.运行时注解一般配合反射机制使用,编译时注解则是用来生成模板代码.这里我们分别使用这两种方法实现Butt ...
- selenium2自动化测试学习笔记(五)-参数化编程,自动登陆网易QQ邮箱
学习python下使用selenium2自动测试第6天,参数化编程这节课花了两天时间. 本次编程主要时间是花在熟悉python上 知识点or坑点: 1.读取txt.xml.csv等文件存储的账号.密码 ...
- python学习笔记1——基础
1)注释 单行注释以#开头,例:#第一个注释 多行注释可用多个#号,还有'''和""",例: #第一行注释 #第二行注释 ''' 第三行注释 第四行注释 ''' &quo ...
- 学号:201621123032 《Java程序设计》第9周学习总结(
1:本周学习总结 1.1:以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容 2:书面作业 2.1: List中指定元素的删除(题集题目) 2.1.1:实验总结.并回答:列举至少2种在List ...
