@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等数据,然后输出响应流,也是比较麻烦的。

java produces_@produces在spring mvc中是什么意思相关推荐

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

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

  2. Java注解中produces啥意思_springmvc 没有produces注释,@produces在spring mvc中是什么意思...

    @RequestMapping(value = "/produces", produces = "application/json"):表示将功能处理方法将生产 ...

  3. java在spring mvc中的图片接收与发送处理

    1.作为client发送和获取图片 1.1.发送图片 作为client时发送图片通常是通过from-data的multipart形式来发送的,这时我们就在模拟浏览器的form文件表单来提交请求,mul ...

  4. spring mvc中的@propertysource

    在spring mvc中,在配置文件中的东西,可以在java代码中通过注解进行读取了: @PropertySource  在spring 3.1中开始引入 比如有配置文件 config.propert ...

  5. spring_在Spring MVC中使用多个属性文件

    spring 每个人都听说过将单个Web应用程序组合成一个大型Web应用程序的门户. 门户软件的工作原理类似于mashup -来自多个来源的内容是在单个服务中获取的,大部分都显示在单个网页中. 门户软 ...

  6. Spring MVC 中的 forward 和 redirect

    Spring MVC 中,我们在返回逻辑视图时,框架会通过 viewResolver 来解析得到具体的 View,然后向浏览器渲染.假设逻辑视图名为 hello,通过配置,我们配置某个 ViewRes ...

  7. Spring 2.5:Spring MVC中的新特性

    转载说明:infoQ就是牛人多,看人家去年就把Spring2.5注视驱动的MVC写出来了,还是这么详细,我真是自叹不如,今天偶尔看到这篇文章非常认真的拜读了2遍,简直是茅厕顿开啊....\(^o^)/ ...

  8. Java Web系列:Spring MVC基础

    1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层 ...

  9. spring mvc中两种异常的处理手法

    spring mvc中两种异常的处理手法 在spring mvc中,对异常的处理,可以小结有如下两类写法: 1 <bean id="exceptionResolver" cl ...

最新文章

  1. linux换服务器登录插件,Linux服务器登录、注销 用户和用户组管理
  2. 利用js对页面数据进行排序
  3. ubuntu 拷贝文件
  4. QM课程02-外部功能
  5. The 2020 ICPC Asia Macau Regional Contest J. Jewel Grab(数颜色+链表)
  6. 第三次预作业20155231邵煜楠:虚拟机上的Linux学习
  7. spring集成struts2
  8. list ajax封装,util-pagelist_基于layui封装的ajax分页列表
  9. 代码源文件中去掉断元字符^M的方法介绍
  10. [LeetCode]Reverse Integer
  11. python全局变量一般没有缩进_python全局变量与局部变量
  12. 如何学习财务数据分析,有哪些好工具?
  13. weblogic部署微服务项目
  14. 猫途鹰公布2019年“旅行者之选”全球最佳海滩榜单
  15. 机器学习基础:吴恩达vs贪心科技AI哪个更值得你选择?
  16. 通过log查看camera sensor型号
  17. 清除node本地缓存
  18. C 语言 随机prim算法 生成迷宫
  19. log报错的原因解决
  20. 【网络工程师精华篇】超实用!100个网络基础知识汇总,网络工程师必备!

热门文章

  1. EFI引导win8 + ubuntu双系统
  2. 令人心动的OFFER 你在哪?
  3. RestClient操作文档解读
  4. request.getParameter乱码
  5. hdu 5063 操作逆推+mul每次要*2%(modo - 1)
  6. RMP、DEB系统相关安装包下载位置
  7. iOS开发之appCode工具
  8. 【独立站运营】提高客户体验的 7种有效方法
  9. 数学之美—快排为什么那样快
  10. EF-使用EF框架进行分页