@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"),方法级别的[email protected](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啥意思_springmvc 没有produces注释,@produces在spring mvc中是什么意思...相关推荐

  1. Spring MVC中@ControllerAdvice注解实现全局异常拦截

    Spring MVC中@ControllerAdvice注解实现全局异常拦截 参考文章: (1)Spring MVC中@ControllerAdvice注解实现全局异常拦截 (2)https://ww ...

  2. Spring MVC 中的基于注解的 Controller

    为什么80%的码农都做不了架构师?>>>    Spring MVC 中的基于注解的 Controller @Controller 基于注解的 Controller   终于来到了基 ...

  3. Spring MVC中@Controller和@RequestMapping注解详解

    在<第一个Spring MVC应用>教程中创建了两个传统风格的控制器,它们是实现 Controller 接口的类.传统风格的控制器不仅需要在配置文件中部署映映射,而且只能编写一个处理方法, ...

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

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

  5. spring mvc中的@propertysource

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

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

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

  7. Spring MVC中的视图解析ViewResolver

    http://blog.csdn.net/prince2270/article/details/5891085 在Spring MVC中,当Controller将请求处理结果放入到ModelAndVi ...

  8. 在Spring MVC中使用Velocity

    在Spring MVC中使用Velocity – Part 1工程中配置velocity 目的 Spring MVC中结合velocity的配置和操作. 简介 我们要显示一个课程列表,需要如下的 Ja ...

  9. Spring MVC中获取Request的方法及分析

    一.概述 在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端IP地址.请求的URL.header中的属性(如cookie.授权信息).body中的数 ...

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

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

最新文章

  1. 2021全球抗体亲和力预测大赛来了!
  2. 计算机视觉的优点和局限性
  3. #开发catia_CATIA工程制图二次开发之15:从平面创建剖面视图
  4. (视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定...
  5. 【蓝桥杯官网试题 - 历届试题】格子刷油漆(dp)
  6. Struts2知识点总结
  7. linux下iscsi
  8. 关于性能优化的一些实践
  9. C# - 接口,继承
  10. 扎心实战案例:麻(shi)雀(zhan)虽小,五脏俱全
  11. [Struts]使用tiles管理界面遇到困难
  12. 2020-08-17每日一句
  13. linux定时器无法重启pm2,在linux下开机启动pm2 不成功
  14. 分兵策略应对高速发展
  15. Spring Cloud Eureka 全解 (5) - 自我保护机制
  16. 听听别人怎么说:VueJS 与 ReactJS
  17. 函数重载导致的二义性
  18. 5700: 还钱问题
  19. C语言细看从头|内存清空函数
  20. python爬取百度云网盘资源-源码

热门文章

  1. R语言使用rnorm函数生成正太分布数据、使用plot函数可视化折线图、使用points函数指定数据点的颜色、使用lines函数指定线条的颜色
  2. 寒训3H Drazil and Tiles
  3. request.getParameter()
  4. linux 关机 异响,经验分享:自己动手解决台式机电源异响噪音
  5. Jetpack Compose 深入探索系列二:Compose 编译器
  6. AppCode初用体验
  7. 【React】717- 从零实现 React-Redux
  8. 【赏金猎人】记一次SRC挖掘思路
  9. 北师19春计算机应用基础,北师19春《大学英语(三)》在线考核试卷【参考答案】...
  10. 程序员才能理解的20张动图,你懂几个?