SpingMVC的内容协商支持三种方式:
1、使用后缀,如.json、.xml后缀。
2、使用Accept头
3、通过query参数指定,如 ?format=xml参数,表示要求返回XML格式数据(默认参数名是format,可以修改。)
如果同时开启了上面的部分或全部方式,解析顺序是后缀、参数、Accept头.
<!-- Make this available across all of Spring MVC --> <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" /> <!-- Total customization - see below for explanation. --> <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="favorPathExtension" value="true" /> <property name="favorParameter" value="false" /> <property name="parameterName" value="format" /> <property name="ignoreAcceptHeader" value="false"/> <property name="useJaf" value="false"/> <property name="defaultContentType" value="text/html" /> <property name="mediaTypes"> <map> <entry key="json" value="application/json" /> <entry key="xml" value="application/xml" /> </map> </property> </bean>
favorPathExtension
参数表示是否开启后缀,默认true。(使用形如/account/a.json、/account/a.xml的方式)
favorParameter
参数表示是否开启request参数识别,默认false。(使用形如/account/a?format=json、/account/?format=xml的方式)
parameterName
参数表示使用参数的名字,默认format,如果配置为mediaType,则请求格式变为/account/a?mediaType=json
ignoreAcceptHeader
表示是否关闭accept头识别,默认false,即默认开启accept头识别。
defaultContentType
表示服务器默认的MediaType类型。
SpringMVC 4.1 新特性(二)内容协商视图
http://blog.csdn.net/w372426096/article/details/78429158
Spring Web MVC框架(九) XML和JSON视图与内容协商
https://www.jianshu.com/p/b6d2ea9ffd9d