SpringMVC前后台Json转换

问题:SpringMVC框架下使用ajax与后台进行json数据交互失败

maven中的jar包依赖:

 <!--json转换-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.5</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>

View层code:

 <script type="text/javascript">
        //请求json 输出json
        function requestJson() {
        $.ajax({
            type:'POST',
            url:'${pageContext.request.contextPath}/requestJson.action',
            contentType:'application/json;charset=UTF-8',
            data:'{"id":" ","name":"手机","price":"999","detail":"","pic":" " ,"createtime":""}',
            success:function (msg) {
                alert(msg);

            }
        })
        }
        //请求key value 输出json
        function responseJson() {
            $.ajax({
                type:'POST',
                contentType:'application/json',
                url:'${pageContext.request.contextPath}/responseJson.action',
                data:'id=&name=手机&price=999&detail=&pic=&createtime=',
                success:function (msg) {
                    alert(msg);
                }
            })
        }
    </script>

Controller层code:

public class JsonTest {
@RequestMapping("/requestJson")
    public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom){
        return itemsCustom;
}
    @RequestMapping("/responseJson")
    public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom){
        return itemsCustom;
    }
}


解决方案:maven中jar包依赖替换,pom.xml:   

   <!--json转换-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.7.4</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.7.4</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.7.4</version>
    </dependency>

要开启spring的注解扫描,springmvc.xml中新添加:

<mvc:annotation-driven/>
    <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
    <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>
                <bean class="org.springframework.http.MediaType">
                    <constructor-arg index="0" value="text"/>
                    <constructor-arg index="1" value="plain"/>
                    <constructor-arg index="2" value="UTF-8"/>
                </bean>
                <bean class="org.springframework.http.MediaType">
                    <constructor-arg index="0" value="*"/>
                    <constructor-arg index="1" value="*"/>
                    <constructor-arg index="2" value="UTF-8"/>
                </bean>
                <bean class="org.springframework.http.MediaType">
                    <constructor-arg index="0" value="text"/>
                    <constructor-arg index="1" value="*"/>
                    <constructor-arg index="2" value="UTF-8"/>
                </bean>
                <bean class="org.springframework.http.MediaType">
                    <constructor-arg index="0" value="application"/>
                    <constructor-arg index="1" value="json"/>
                    <constructor-arg index="2" value="UTF-8"/>
                </bean>
            </list>
        </property>
    </bean>

View层code:

<html>
<head>
    <title>json交互测试</title>
    <script type="text/javascript" src="../../js/jquery-3.2.1.min.js"></script>
        <script type="text/javascript">
        //请求json 输出json
        function requestJson() {
        $.ajax({
            type:'POST',
            url:'${pageContext.request.contextPath}/requestJson.action',
            contentType:'application/json;charset=UTF-8',
            data:'{"id":" ","name":"手机","price":"999","detail":"","pic":" " ,"createtime":""}',
            success:function (msg) {
                alert(JSON.stringify(msg));//解决json返回显示object object 将json转换成字符串

            }
        })
        }
        //请求key value 输出json
        function responseJson() {
            $.ajax({
                type:'POST',
                contentType:'application/json',
                url:'${pageContext.request.contextPath}/responseJson.action',
                data:'id=&name=手机&price=999&detail=&pic=&createtime=',
                success:function (msg) {
                    alert(JSON.stringify(msg));
                }
            })
        }
    </script>
</head>
<body>
<input type="button" onclick="requestJson()" value="请求json 输出json"/>
<input type="button" onclick="responseJson()" value="请求key value 输出json"/>
</body>
</html>

原因分析:

1.可能是jar包不全或者冲突

2.springmvc.xml中光使用  <mvc:annotation-driven/> 不能实现功能,需要开启注解功能

猜你喜欢

转载自blog.csdn.net/qq_31047245/article/details/80582605