java produces_@produces在spring mvc中是什么意思
@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中是什么意思相关推荐
- java produces_java-有关在Spring MVC中@RequestMapping中的Produces属性的一些信息
在Spring MVC Showcase示例(可从STS仪表板了解)中,我遇到以下情况. 我认为我有以下链接: ">@ResponseBody (UTF-8 charset produ ...
- Java注解中produces啥意思_springmvc 没有produces注释,@produces在spring mvc中是什么意思...
@RequestMapping(value = "/produces", produces = "application/json"):表示将功能处理方法将生产 ...
- java在spring mvc中的图片接收与发送处理
1.作为client发送和获取图片 1.1.发送图片 作为client时发送图片通常是通过from-data的multipart形式来发送的,这时我们就在模拟浏览器的form文件表单来提交请求,mul ...
- spring mvc中的@propertysource
在spring mvc中,在配置文件中的东西,可以在java代码中通过注解进行读取了: @PropertySource 在spring 3.1中开始引入 比如有配置文件 config.propert ...
- spring_在Spring MVC中使用多个属性文件
spring 每个人都听说过将单个Web应用程序组合成一个大型Web应用程序的门户. 门户软件的工作原理类似于mashup -来自多个来源的内容是在单个服务中获取的,大部分都显示在单个网页中. 门户软 ...
- Spring MVC 中的 forward 和 redirect
Spring MVC 中,我们在返回逻辑视图时,框架会通过 viewResolver 来解析得到具体的 View,然后向浏览器渲染.假设逻辑视图名为 hello,通过配置,我们配置某个 ViewRes ...
- Spring 2.5:Spring MVC中的新特性
转载说明:infoQ就是牛人多,看人家去年就把Spring2.5注视驱动的MVC写出来了,还是这么详细,我真是自叹不如,今天偶尔看到这篇文章非常认真的拜读了2遍,简直是茅厕顿开啊....\(^o^)/ ...
- Java Web系列:Spring MVC基础
1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层 ...
- spring mvc中两种异常的处理手法
spring mvc中两种异常的处理手法 在spring mvc中,对异常的处理,可以小结有如下两类写法: 1 <bean id="exceptionResolver" cl ...
最新文章
- linux换服务器登录插件,Linux服务器登录、注销 用户和用户组管理
- 利用js对页面数据进行排序
- ubuntu 拷贝文件
- QM课程02-外部功能
- The 2020 ICPC Asia Macau Regional Contest J. Jewel Grab(数颜色+链表)
- 第三次预作业20155231邵煜楠:虚拟机上的Linux学习
- spring集成struts2
- list ajax封装,util-pagelist_基于layui封装的ajax分页列表
- 代码源文件中去掉断元字符^M的方法介绍
- [LeetCode]Reverse Integer
- python全局变量一般没有缩进_python全局变量与局部变量
- 如何学习财务数据分析,有哪些好工具?
- weblogic部署微服务项目
- 猫途鹰公布2019年“旅行者之选”全球最佳海滩榜单
- 机器学习基础:吴恩达vs贪心科技AI哪个更值得你选择?
- 通过log查看camera sensor型号
- 清除node本地缓存
- C 语言 随机prim算法 生成迷宫
- log报错的原因解决
- 【网络工程师精华篇】超实用!100个网络基础知识汇总,网络工程师必备!