SpringMVC的json数据绑定

来源:互联网 发布:win7系统摄像头软件 编辑:程序博客网 时间:2024/06/08 09:23

总结一下今天遇到的问题:
第一个问题:在使用SpringMVC的时候,前台发送ajax请求传输json数据到后台报错

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported 

前台代码:

$.ajax({                url: "${pageContext.request.contextPath}/savePoints",                type: "post",                data: JSON.stringify(list),                contentType: "application/json",                success: function (result) {                    alert("Ok!");                },                fail: function (result) {                    alert("failed!");                }            });

后台:

@RequestMapping("/savePoints")    @ResponseBody    public void savePoints(@RequestBody List<Point> list){        logger.info(list);        //......    }

原因应该是出在SpringMVC对json数据的接收上面。搜索了很多解决办法,有说加入jackson-mapper-asl.jar包的,然后在spring配置文件中加入如下内容

<!--<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> -->    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">        <property name="messageConverters">            <list >                <ref bean="mappingJacksonHttpMessageConverter" />            </list>        </property>    </bean>    <bean id="mappingJacksonHttpMessageConverter"          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">        <property name="supportedMediaTypes">            <list>                <value>text/html;charset=UTF-8</value>            </list>        </property>    </bean>

配置文件的配置信息跟jackson的版本有关:

第一种应该是spring3之前:'org.springframework.http.converter.json.MappingJacksonHttpMessageConverter'第二种是spring3之后:'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter'

运行之后又报了新的错误:

java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException  

这个错误就好看懂了一点,应该是jackson的核心jar包没有引入,于是我又加入了这些jar包:
这里写图片描述
后面就没有报错了,数据也接收正常。
于是我删掉了jackson-mapper-asl.jar包,只保留了jackson的三个核心包,结果还是正常。

最新的配置是: jackson的三个jar包和spring文件里面的MappingJackson2HttpMessageConverter的配置。
1 0
原创粉丝点击