云中君说:

我又开始写博文了,我前两天没有发关于学习的博文,主要是被学习中@RequestBody注解的学习困扰住了。这时候就是发挥我们的极客精神了,因为博主没有关于学习这个Spring MVC的群体,所以很多问题都是在网上百度解决,前两天遇到的这个问题,差点让我吐血,两天都没解决,最后找到了我的院长大人,帮我解决了这个难题。看来学习这些东西有一个固定的交流平台还是有很多好处的。今天我把我遇到的我问题分享给大家,避免大家采坑。也方便自学的小伙伴们。

开始正文

使用@RequestBody注解前的必要配置

出现500问题表示服务器有问题,说明需要进行配置,否则就不需要了。

pom.xml文件中

<properties>
    ...
    <jackjson.version>2.8.8</jackjson.version>
  </properties>
  
  <dependency>
  	...
  	<dependency>
	  <groupId>com.fasterxml.jackson.core</groupId>
	   <artifactId>jackson-core</artifactId>
	   <version>${jackjson.version}</version>
	</dependency>
	<dependency>
	   <groupId>com.fasterxml.jackson.core</groupId>
	   <artifactId>jackson-annotations</artifactId>
	   <version>${jackjson.version}</version>
	</dependency>
	<dependency>
	   <groupId>com.fasterxml.jackson.core</groupId>
	   <artifactId>jackson-databind</artifactId>
	   <version>${jackjson.version}</version>

      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.32</version>
  </dependency>

自定义springmvc.xml文件中添加

<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>application/json;charset=UTF-8</value>
            </list>
        </property>
    </bean>

如此就解决了500问题;

注意前提

博主的项目是运行在idea编辑器中maven环境下

@RequestBody使用

接收java文件

@RequestMapping(path = "/Demo3/pets",method = RequestMethod.POST,consumes = "application/json")
//    @ResponseBody
    public Pet test1(@RequestBody Pet pet){
        System.out.println(pet.toString());
        return pet;
    }

Pet.java文件

package com.itcast.controller;

import com.fasterxml.jackson.annotation.JsonProperty;

public class Pet {
    @JsonProperty(value="name")
    private String name;
    @JsonProperty(value="age")
    private int age;

    @Override
    public String toString() {
        return "Pet{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Pet() {
    }

    public Pet(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

前端代码

$().ready(function(){
        var obj = JSON.stringify({'name':'zhansan','age':18});
        alert(obj);

        //后台使用对象的形式接受
        $.ajax({
            url: "Demo3/pets",
            type: "post",
            data: obj,
            dataType:"json",
            contentType: 'application/json;charset=utf-8',
            success : function(data){
                alert("haha");
            },
            error:function (e) {
                console.log(e);
            }
        });

    });

如此就可以了。因为使用了静态的外连接javascript文件jqury。所以需要在springmvc.xml添加

<!--静态资源解析,spring会用默认的servlet响应静态文件-->
    <mvc:default-servlet-handler/>

啦啦啦!如果在自己测试的时候与到什么问题,就可以联系我:
QQ:987782650
我们一起讨论,一起学习进步!

nice!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐