@RequestMapping(value = "/produces", produces = "application/json"):表示将功能处理方法将生产json格式的数据,此时根据请求头中的Accept进行匹配,如请求头“Accept:application/json”时即可匹配;

@RequestMapping(value = "/produces", produces = "application/xml"):表示将功能处理方法将生产xml格式的数据,此时根据请求头中的Accept进行匹配,如请求头“Accept:application/xml”时即可匹配。

此种方式相对使用@RequestMapping的“headers = "Accept=application/json"”更能表明你的目的。

服务器控制器代码详解cn.javass.chapter6.web.controller.consumesproduces.ProducesController;

客户端代码类似于之前的Content-Type中的客户端,详见ProducesController.java代码。

当你有如下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

q参数为媒体类型的质量因子,越大则优先权越高(从0到1)

③Accept:*/*,text/*,text/html

将按照如下顺序进行produces的匹配 ①text/html ②text/* ③*/*

即匹配规则为:最明确的优先匹配。

代码详见ProducesPrecedenceController1、ProducesPrecedenceController2、ProducesPrecedenceController3。

三、窄化时是覆盖 而 非继承

如类级别的映射为 @RequestMapping(value="/narrow", produces="text/html"),方法级别的为@RequestMapping(produces="application/xml"),此时方法级别的映射将覆盖类级别的,因此请求头“Accept:application/xml”是成功的,而“text/html”将报406错误码,表示不支持的请求媒体类型。

详见cn.javass.chapter6.web.controller.consumesproduces.NarrowController。

只有生产者/消费者 模式 是 覆盖,其他的使用方法是继承,如headers、params等都是继承。

四、组合使用是“或”的关系

@RequestMapping(produces={"text/html", "application/json"}) :将匹配“Accept:text/html”或“Accept:application/json”。

五、问题

消费的数据,如JSON数据、XML数据都是由我们读取请求的InputStream并根据需要自己转换为相应的模型数据,比较麻烦;

生产的数据,如JSON数据、XML数据都是由我们自己先把模型数据转换为json/xml等数据,然后输出响应流,也是比较麻烦的。

Spring提供了一组注解(@RequestBody、@ResponseBody)和一组转换类(HttpMessageConverter)来完成我们遇到的问题,详见6.6.8节。

https://blog.csdn.net/lzwglory/article/details/17252099

java produces_springMVC produces属性含义相关推荐

  1. java produces_java-有关在Spring MVC中@RequestMapping中的Produces属性的一些信息

    在Spring MVC Showcase示例(可从STS仪表板了解)中,我遇到以下情况. 我认为我有以下链接: ">@ResponseBody (UTF-8 charset produ ...

  2. mybatis操作Oracle数据库批量插入与更新、运行注意事项、属性含义

    一.项目需求 针对将近300万用户的用电数据进行统计分析,将结果更新保存Oracle数据库.我需要往一个表里面插入数据,数据量总计在500万条左右.一条一条插入的话非常慢,2万条数据近20分钟,后面就 ...

  3. java中蛇的属性有哪些_学习Java类的属性

    学习Java类的属性-武汉北大青鸟 Public.private.protected显示了三种类中的属性和服务的类型,public是可以随意访问的.private是外界不能访问的(显示了数据的封装性) ...

  4. 【java】java获取对象属性类型、属性名称、属性值

    java获取对象属性类型.属性名称.属性值 获取属性 修饰符:[在Field[]循环中使用] String modifier = Modifier.toString(fields[i].getModi ...

  5. Java中static的含义和用法

    Java中static的含义和用法 static:静态的,用于修饰成员(成员变量,成员方法); 1.被static所修饰的变量或者方法会储存在数据共享区; 2.被static修饰后的成员变量只有一份! ...

  6. Linux中的Java类,Java基础入门学习-Java中类的属性

    Java基础入门学习-Java中类的属性 发布时间:2006-05-27 00:46:15来源:红联作者:WWW Public.private.protected显示了三种类中的属性和服务的类型,pu ...

  7. Java使用对象使用属性过滤集合对象重复数据

    使用流Stream方式过滤对象中重复的数据-Java使用对象使用属性过滤集合对象重复数据 1.先创建一个方法工具类 private static <T> Predicate<T> ...

  8. java遍历一个类的属性名,java遍历对象属性

    java对象动态添加属性,Class对象和Java反射机制,java遍历对象属性,js对象动态添加属性 java 对象动态添加属性,Class对象和Java反射机制,java遍历对象属性,js对象动态 ...

  9. 如何配置数据库带有下划线字段对应Java实体类属性(驼峰命名)

    一般开发中,数据库字段设计推荐使用下划线(u_name),Java实体类属性使用驼峰命名(uName),为了能使数据库字段与Java实体类属性一一映射,需要做一下的配置,这里我用的是spring bo ...

最新文章

  1. 动态规划(DP),Human Gene Functions
  2. 文件传输:二进制文件传输与文本传输(file transfer)
  3. SAP中过账码or记账码posting code
  4. 2019 surf project for a milestone
  5. 九宫重排_康拓展开_bfs
  6. 《Adobe Flash Professional CC经典教程》——1.15 复习
  7. h5页面移动端的社会化分享_Adobe年尾续运H5页面
  8. 第三方网站调用微信公众号的图片被禁止
  9. 锁 公平 非公平_推荐引擎也需要公平!
  10. 几款常用UML建模工具介绍
  11. 监控系统存储服务器和磁盘阵列,监控怎样用磁盘阵列存储服务器
  12. 开心赚手机网赚操作真实赚钱项目揭秘
  13. JS 超大文件上传解决方案:分片断点上传(一)
  14. 将sql数据库字段中的NULL都替换为空
  15. Xiaojie雷达之路---TI实战笔记---ESM Driver说明
  16. 世界主要的大半岛有哪些?
  17. 武汉市2010年 第六次全国人口普查主要数据公报
  18. PMO项目经理必备的简洁解决问题方案和报告模板
  19. 手机外接usb摄像头软件下载_佳能推出Mac测试版LUMIX Tether软件 可将相机变身USB外接摄像头...
  20. 飞利浦Zoom!正式进入中国市场;西门子医疗首台发热门诊“无人”CT落地;埃森哲意向收购法国领先云服务提供商 | 美通企业周刊...

热门文章

  1. HRED+VHRED+AWI模型介绍
  2. 关于mysql连接报10055错误的解决
  3. DuiVision开源界面库介绍
  4. 修改chrome或edge缓存位置
  5. Week 2互评作业:用“埃氏筛法”求2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。
  6. C语言数据类型(超详细)
  7. emacs+prelude问题配置
  8. php 外观模式,PHP设计模式 外观设计模式
  9. OpenCV-Python 读取显示图像 | 五
  10. MATLAB中canny算子边缘检测