zoukankan      html  css  js  c++  java
  • Posting JSON to Spring MVC Controller

    Spring MVC can be setup to automatically bind incoming JSON string into a Java object. Firstly, ensure you have jackson-mapper-asl included on the classpath:

    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>

    Assuming the JSON string we want to bind represent a person object like this:

    {
      name: "Gerry",
      age: 20,
      city: "Sydney"
    }

    Which will be bound into following Java class:

    public class Person {
      private String name;
      private int age;
      private String city;
      // getters & setters ...
    }

    Declare the Spring MVC controller handler method like below. The handler method is mapped into path “addPerson” with method POST.

    @RequestMapping(value = "/addPerson", 
                    method = RequestMethod.POST,
                    headers = {"Content-type=application/json"})
    @ResponseBody
    public JsonResponse addPerson(@RequestBody Person person) {
      logger.debug(person.toString());
      return new JsonResponse("OK","");
    }

    Also pay attention to @ResponseBody and the returned JsonResponse object. Here JsonResponse is a class to return the result of the addPerson operation.

    public class JsonResponse {
     
      private String status = "";
      private String errorMessage = "";
     
      public JsonResponse(String status, String errorMessage) {
        this.status = status;
        this.errorMessage = errorMessage;
      }
    }

    When converted to JSON this will look like this:

    {
      status : "OK",
      errorMessage : ""
    }

    Below is an example jQuery based javascript handler that posts into the above Spring MVC handler and observe the returned value:

    $.ajax({
      type: "POST",
      url: "addPerson",
      data: JSON.stringify({ name: "Gerry", age: 20, city: "Sydney" }),
      contentType: 'application/json',
      success: function(data) {
        if(data.status == 'OK') alert('Person has been added');
        else alert('Failed adding person: ' + data.status + ', ' + data.errorMessage);
      }
    });
  • 相关阅读:
    [underscore源码学习]——`>>` 运算符和二分查找
    【css】——三种方法实现多列等高
    【css】——根据div个数显示不同的样式
    拐点
    react.js 点击事件传递参数的方法
    react-router-dom 手动控制路由跳转
    书单
    PHP字符串操作汇总
    PHP数组操作汇总
    Yii防注入攻击笔记
  • 原文地址:https://www.cnblogs.com/sos-blue/p/5101559.html
Copyright © 2011-2022 走看看