spring mvc 配置xml数据格式,webservice
来源:互联网 发布:7u分享网络不能提现吗 编辑:程序博客网 时间:2024/06/05 06:46
参考
Http请求中Content-Type讲解以及在Spring MVC中的应用
http://blog.csdn.net/blueheart20/article/details/45174399
spring mvc设置应答体的content type
http://hw1287789687.iteye.com/blog/2188480引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在spring MVC中如何使用它们来映射请求信息。
1. Content-Type
MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。
常见的媒体格式类型如下:
- text/html : HTML格式
- text/plain :纯文本格式
- text/xml : XML格式
- image/gif :gif图片格式
- image/jpeg :jpg图片格式
- image/png:png图片格式
以application开头的媒体格式类型:
- application/xhtml+xml :XHTML格式
- application/xml : XML数据格式
- application/atom+xml :Atom XML聚合格式
- application/json : JSON数据格式
- application/pdf :pdf格式
- application/msword : Word文档格式
- application/octet-stream : 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:
- multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
以上就是我们在日常的开发中,经常会用到的若干content-type的内容格式。
2. Spring MVC中关于关于Content-Type类型信息的使用
首先我们来看看RequestMapping中的Class定义:
method: 指定请求的method类型, GET、POST、PUT、DELETE等
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
params: 指定request中必须包含某些参数值是,才让该方法处理
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求
其中,consumes, produces使用content-typ信息进行过滤信息;headers中可以使用content-type进行过滤和判断。
3. 使用示例
3.1 headers
示例2
当你有如下Accept头,将遵守如下规则进行应用:
①Accept:text/html,application/xml,application/json
将按照如下顺序进行produces的匹配 ①text/html ②application/xml ③application/json
②Accept:application/xml;q=0.5,application/json;q=0.9,text/html
将按照如下顺序进行produces的匹配 ①text/html ②application/json ③application/xml
参数为媒体类型的质量因子,越大则优先权越高(从0到1)
③Accept:*/*,text/*,text/html
将按照如下顺序进行produces的匹配 ①text/html ②text/* ③*/*
即匹配规则为:最明确的优先匹配。
Requests部分
Responses 部分
3.2 params的示例
仅处理请求中包含了名为“myParam”,值为“myValue”的请求,起到了一个过滤的作用。3.3 consumes/produces
方法仅处理request Content-Type为“application/json”类型的请求. produces标识==>处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;4. 总结
在本文中,首先介绍了Content-Type主要支持的格式内容,然后基于@RequestMapping标注的内容介绍了主要的使用方法,其中,headers, consumes,produces,都是使用Content-Type中使用的各种媒体格式内容,可以基于这个格式内容来进行访问的控制和过滤。
参考资料:
1. HTTP中支持的Content-Type: http://tool.oschina.NET/commons
2. Media Type介绍。 http://www.iteye.com/topic/1127120
spring MVC中如何设置应答体的content type呢?
spring MVC中如何设置返回类型呢?
我们知道response 的content type主要有:
text/html
text/plain
application/json;charset=UTF-8
application/octet-stream
等
先举一个例子,spring mvc中可以通过如下方式返回json字符串:
- @ResponseBody
- @RequestMapping(value = "/upload")
- public String upload(HttpServletRequest request, HttpServletResponse response,String contentType2)
- throws IOException {
- String content = null;
- Map map = new HashMap();
- ObjectMapper mapper = new ObjectMapper();
- map.put("fileName", "a.txt");
- try {
- content = mapper.writeValueAsString(map);
- System.out.println(content);
- } catch (JsonGenerationException e) {
- e.printStackTrace();
- } catch (JsonMappingException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return content;
- }
虽然访问时返回的确实是json字符串,但是response 的content type是"
text/html
"这不是我们期望的,我们期望的response content type是"application/json"或者"application/json;charset=UTF-8",那么如何实现呢?
通过注解@RequestMapping 中的produces
用法如下:
- @RequestMapping(value = "/upload",produces="application/json;charset=UTF-8")
spring MVC官方文档:
Producible Media Types
You can narrow the primary mapping by specifying a list of producible media types. The request will be matched only if the Accept request header matches one of these values. Furthermore, use of the produces condition ensures the actual content type used to generate the response respects the media types specified in the producescondition. For example:
@Controller@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")@ResponseBodypublic Pet getPet(@PathVariable String petId, Model model) { // implementation omitted}
Just like with consumes, producible media type expressions can be negated as in !text/plain to match to all requests other than those with an Accept header value oftext/plain.
The produces condition is supported on the type and on the method level. Unlike most other conditions, when used at the type level, method-level producible types override rather than extend type-level producible types.
- spring mvc 配置xml数据格式,webservice
- spring-mvc.xml配置
- spring-mvc.xml配置
- spring mvc xml配置
- spring mvc 接收json、xml 数据格式,自动解析成对象
- Spring Mvc ajax和json数据格式的配置
- spring mvc xml文件配置
- Spring MVC web.xml配置
- shiro配置----spring-mvc.xml
- [spring]Spring MVC web.xml 配置文件配置
- spring mvc 返回json数据格式
- spring mvc 配置(xml配置详解)
- spring mvc 配置(xml配置详解)
- spring mvc 配置(xml配置详解)
- spring mvc 配置(xml配置详解)
- spring mvc配置(xml配置详解)
- spring mvc 配置(xml配置详解)
- spring mvc 配置(xml配置详解)
- webuploader的使用 文件上传组件
- Kafka 基本概念
- HDU
- 17个新手常见的python运行错误
- Vue.js2.0从入门到放弃---入门实例(一)
- spring mvc 配置xml数据格式,webservice
- 过拟合的解决方法
- Problem A: 类的初体验
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
- 杭电2099:整除的尾数
- 2016年度最受欢迎中国开源软件 TOP 20
- 斯考特·杨(Scott Young)快速学习方法
- E-R图及实例
- const,全局变量