消息转换

httpMessageConverter接口

负责将请求信息转换一个对象,并把对象绑定到请求方法的参数中或作为相应信息

  • dispatchServlet默认装配了requestMappingHandlerAdapter作为HandlerAdapter组件的实现类

接口方法

p49

装配其他类型httpMessageConverter 可以在spring-config中自行定义一个requestMappingHandlerAdapter

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="messageConverters"
        <list>
            <bean class="…"/>
        </list>
    </property>
</bean>

转换json数据

spring提供了处理json请求响应的httpMessageConverter:MappingJacksonHttpMessageConverter

配置

<!-- 配置方案 自动注册requestMappingHandler和requestMappingHandlerAdapter -->
<mvc:annotation-driven/>
<!-- dispatcherServlet会截获所有请求路径,而引入javascript时的路径会被看成请求路径,会报出404错误,加入默认servlet时找不到回去找静态内容 -->
<mvc:default-servlet-handler/>

自定义httpMessageConverter接收json数据

使用默认servlet相应静态文件

    <mvc:default-servlet-handler/>

配置自定义httpMessageConverter

    <!-- 设置配置方案 -->
    <mvc:annotation-driven>
        <!-- 设置不使用默认的消息转换器 -->
        <mvc:message-converters register-defaults="false">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
            <!-- 配置fastJson -->
            <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <!-- 支持的媒体类型 -->
                <property name="supportedMediaTypes">
                    <list>
                       <!-- 不先写text/html ie会出现下载提示 -->
                       <value>text/html;charset=UTF-8</value>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





原文地址:https://www.cnblogs.com/renluxiang/p/d20daf05fb5459d8aed0712073ee5c75.html