Spring MVC @RequestBody
来源:原创 发布时间:2015-03-24 归档:springmvc
开发环境 :
JDK 7
Maven 3
Tomcat 7
Spring 4.1.5
Eclipse Luna
@RequestBody 注解表明处理方法的参数的值是绑定到 Http Request Body, 处理方法执行时从 Http Request Body 中读取绑定的数据到参数。
示例代码片段 1 ( pojo )
@Controller @RequestMapping("/product") public class ProductController { @RequestMapping(value = "/add", method = POST) public String addProduct(@RequestBody Product product) { System.out.println(product); return LIST_PAGE; } public static class Product { private int id; private String name; private double price; public Product() { } public Product(int id, String name, double price) { this.id = id; this.name = name; this.price = price; } // ignore getters and setters @Override public String toString() { return id + " " + name + " " + price; } } }
<p> <textarea disabled="disabled"> {"id":1001,"name":"戴尔-XPS-13(XPS13D-9343-1508)笔记本","price":6999.0} </textarea> <button>add</button> </p> <script type="text/javascript"> $(function(){ $("button").click(function(){ var button = $(this); $.ajax({ type : "post", url : "product/" + button.text(), data : button.parent().find("textarea").val(), contentType : "application/json", success : function() { alert("well, now you can see the execution result on the console"); } }); }); }); </script>示例代码片段 2 ( list )
@Controller @RequestMapping("/product") public class ProductController { @RequestMapping(value = "/addSerial", method = POST) public String addSerialProduct(@RequestBody List<Product> list) { for(Product product : list) { System.out.println(product); } return LIST_PAGE; } }
<p> <textarea disabled="disabled"> [{"id":1001,"name":"戴尔-XPS-13(XPS13D-9343-1508)笔记本","price":6999.0}, {"id":1002,"name":"戴尔-XPS-13(XPS13D-9343-1708)笔记本","price":8999.0}] </textarea> <button>addSerial</button> </p>示例代码片段 3 ( map )
@Controller @RequestMapping("/product") public class ProductController { @RequestMapping(value = "/addBrand", method = POST) public String addBrandProduct(@RequestBody Map<String, Product> map) { System.out.println(map.get("dell")); return LIST_PAGE; } }
<p> <textarea disabled="disabled"> {"dell":{"id":1003,"name":"戴尔-XPS-13(XPS13D-9343-1808T)笔记本","price":13000.0}} </textarea> <button>addBrand</button> </p>不要忘记引入依赖
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.1</version> </dependency>
示例代码下载