总结一下今天遇到的问题:
第一个问题:在使用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的配置。
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐