SpringMVC内容协商返回jsonxml格式

本文详细介绍了在SpringMVC中实现内容协商的配置方法,包括如何通过路径扩展名、请求参数及接受头来确定响应内容的媒体类型,以及如何配置默认的媒体类型和视图解析器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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" />

转载于:https://my.oschina.net/u/3005325/blog/2961998

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值