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);
  }
});
时间: 2024-09-30 06:03:26

Posting JSON to Spring MVC Controller的相关文章

Spring MVC Controller与jquery ajax请求处理json

在用 spring mvc 写应用的时候发现jquery传递的[json数组对象]参数后台接收不到,多订单的处理,ajax请求: var cmd = {orders:[{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"1"}, {"goodsId":"2"},

Spring MVC Controller单例陷阱

Spring MVC Controller默认是单例的: 单例的原因有二: 1.为了性能. 2.不需要多例. 1.这个不用废话了,单例不用每次都new,当然快了. 2.不需要实例会让很多人迷惑,因为spring mvc官方也没明确说不可以多例. 我这里说不需要的原因是看开发者怎么用了,如果你给controller中定义很多的属性,那么单例肯定会出现竞争访问了. 因此,只要controller中不定义属性,那么单例完全是安全的.下面给个例子说明下: package com.lavasoft.dem

spring mvc controller中获取request head内容

spring mvc controller中获取request head内容: @RequestMapping("/{mlid}/{ptn}/{name}") public String print(@PathVariable Integer mlid, @PathVariable String ptn, @PathVariable String name, HttpSession session, Model model, @RequestHeader String referer,

转:【Spring MVC Controller单例陷阱】

http://lavasoft.blog.51cto.com/62575/1394669/ Spring MVC Controller默认是单例的: 单例的原因有二:1.为了性能.2.不需要多例. 1.这个不用废话了,单例不用每次都new,当然快了.2.不需要实例会让很多人迷惑,因为spring mvc官方也没明确说不可以多例. 我这里说不需要的原因是看开发者怎么用了,如果你给controller中定义很多的属性,那么单例肯定会出现竞争访问了. 因此,只要controller中不定义属性,那么单

Spring MVC Controller中解析GET方式的中文参数会乱码的问题

Spring MVC Controller中解析GET方式的中文参数会乱码的问题 问题描述 在工作上使用Spring老是碰到一个问题,使用Controller处理GET方式的请求参数时,服务端得到的结果会碰到乱码,之前翻阅了很多与Java EE相关的很多乱码处理资料,不管是加过滤器还是统一文件编码,都没能正确解决,后来设计接口时,一直采用先Base64,然后再作为参数传过来的方式解决的.最近找到了根本的解决方案,顺手记下来. 为何会乱码 Spring MVC 是基于Servlet,在Http请求

Spring MVC Controller 单元测试

简介 Controller层的单元测试可以使得应用的可靠性得到提升,虽然这使得开发的时间有所增加,有得必失,这里我认为得到的比失去的多很多. Sping MVC3.2版本之后的单元测试方法有所变化,随着功能的提升,单元测试更加的简单高效. 这里以4.1版本为例,记录Controller的单元测试流程.非常值得参考的是Spring MVC Showcase(https://github.com/spring-projects/spring-mvc-showcase),它当前的版本使用的是4.1.0

Spring MVC Controller中解析GET方式的中文参数会乱码的问题(tomcat如何解码)

Spring MVC Controller中解析GET方式的中文参数会乱码的问题 问题描述 在工作上使用突然出现从get获取中文参数乱码(新装机器,tomcat重新下载和配置),查了半天终于找到解决办法. 为何会乱码 Spring MVC 是基于Servlet,在Http请求到达Servlet解析之前,GET过来的URL已经被Tomcat先做了一次URLDecode.Tomcat对GET方式默认的URL解码结果是iso-8859-1而不是我认为的UTF-8. 解决方案 解决方案也很简单,除了平常

spring mvc Controller与jquery Form表单提交代码demo

1.JSP表单 <% String basePath = request.getScheme() + "://" + request.getServerName() +":"+ request.getServerPort() + request.getContextPath() + "/"; %> <script language="javascript" type="text/javascript

spring mvc controller中的异常封装

http://abc08010051.iteye.com/blog/2031992 一直以来都在用spring mvc做mvc框架,我使用的不是基于注解的,还是使用的基于xml的,在controller里一般都会加上一个异常捕捉,能分析出来的异常,提示出具体信息,不能预料的异常,返回一个统一的异常提示信息,未封装前的代码为: Java代码   public ModelAndView addBigDeal(HttpServletRequest request, HttpServletRespons