欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ssm实现ajax前后端json数据交互

程序员文章站 2024-03-23 17:33:40
...

这些天在写项目的时候,一直被一个事情困扰,就是ajax和后端交互时候总是得不到json数据,自己在springboot测试却没有问题,在此记录一下有关于spring-mvc.xml的配置。当然还有源码。


首先在pom.xml中配置json依赖

<!-- 映入JSON -->
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.8.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.0</version>
    </dependency>

然后在xml配置文件中加入

<bean id="mappingJacksonHttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
                <value>application/json;charset=UTF-8</value>
            </list>
        </property>
    </bean>
 <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>

            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
               <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=UTF-8</value>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>


在页面中一定要注意添加contentType:'application/json:这是告诉服务器,我要发什么类型的数据 。

                var ds = {};
                ds.boardId='${host.boardId}';
                ds.topicId='${host.topicId}';
                ds.userId='${user.userId}';
                ds.postText=text;
                ds.postType=0;
                $.ajax({
                    type:'post',
                    url:'/postText',
                    contentType:'application/json',
                    //数据格式是json串,商品信息
                    data:JSON.stringify(ds),
                    success:function(data){//返回json结果
                        alert(data);
                        location.reload();//刷新页面
                    }
                });

最后 后台controller:

 @RequestMapping(value = "/postText", method = RequestMethod.POST)
    @ResponseBody//用来返回数据并非view
    public boolean postText(@RequestBody Post post) {//接收json并映射到post对象中
        forumService.addPost(post);
        return true;
    }
相关标签: ajax json ssm