SpringMVC內容協商返回jsonxml格式
阿新 • • 發佈:2018-11-27
springMVC內容協商需要引入以下包
<!--springMVC內容協商需要引入以下包--> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.9.7</version> </dependency> <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.11.1</version> </dependency>
xml配置
<!-- 內容協商 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型別。 --> <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="favorPathExtension" value="true" /> <property name="favorParameter" value="true" /> <property name="parameterName" value="mediaType" /> <property name="ignoreAcceptHeader" value="true"/> <property name="useJaf" value="false"/> <property name="defaultContentType" value="application/json" /> <property name="mediaTypes"> <map> <entry key="json" value="application/json" /> <entry key="xml" value="application/xml" /> <entry key="string" value="text/plain" /> </map> </property> </bean> <!-- ========================= VIEW解析定義 ========================= --> <!-- 內容協商檢視解析器;根據contentNegotiationManager使用的不同mediaTypes決定不同的 view進行響應 預設使用json--> <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="order" value="0" /> <!-- 內容協商管理器 用於決定media type --> <property name="contentNegotiationManager" ref="contentNegotiationManager"/> <!-- 預設檢視 解析 --> <property name="defaultViews"> <list> <!--是否有根節點的區別,不加配置返回 {"account":{"username":"admin","password":"123456"}} --> <!-- 加配置返回 {"username":"admin","password":"123456"}--> <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"> <property name="extractValueFromSingleKeyModel" value="true" /> </bean> <bean class="org.springframework.web.servlet.view.xml.MarshallingView"> <property name="marshaller"> <bean class="org.springframework.oxm.xstream.XStreamMarshaller"/> </property> </bean> </list> </property> </bean> <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />