Spring MVC @ResponseBody
来源:原创 发布时间:2015-03-23 归档:springmvc
开发环境 :
JDK 7
Maven 3
Tomcat 7
Spring 4.1.5
Eclipse Luna
@ResponseBody 注解表明处理方法的返回值不作为视图名称来解析, 而直接写出到 Http Response Body。
示例代码片段 1 ( pojo )
@Controller
@RequestMapping("/product")
public class ProductController {
@RequestMapping(value = "/latest", method = POST)
public @ResponseBody Product latestProduct() {
return new Product(1001, "戴尔-XPS-13(XPS13D-9343-1508)笔记本", 6999);
}
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
}
}
<p>
<textarea disabled="disabled"></textarea>
<button id="latest">latest</button>
</p>
<script type="text/javascript">
$(function(){
$("#latest").click(function() {
var self = $(this);
_post(self, function(data){
var result = data.id + " " + data.name + " " + data.price;
self.parent().find("textarea").val(result);
});
});
var _post = function(e, _callback) {
$.ajax({
type : "post",
url : "product/" + e.text(),
success : function(result) {
_callback(result);
}
});
}
});
</script>
@Controller
@RequestMapping("/product")
public class ProductController {
@RequestMapping(value = "/serial", method = POST)
public @ResponseBody List<Product> serialProduct() {
List<Product> list = new ArrayList<>();
list.add(new Product(1001, "戴尔-XPS-13(XPS13D-9343-1508)笔记本", 6999));
list.add(new Product(1002, "戴尔-XPS-13(XPS13D-9343-1708)笔记本", 8999));
return list;
}
}
<p>
<textarea disabled="disabled"></textarea>
<button id="serial">serial</button>
</p>
<script type="text/javascript">
$(function(){
$("#serial").click(function() {
var self = $(this);
_post(self, function(data){
var result = "";
$.each(data, function(i, v){
result += v.id + " " + v.name + " " + v.price + "\r\n";
});
self.parent().find("textarea").val(result);
});
});
});
</script>
@Controller
@RequestMapping("/product")
public class ProductController {
@RequestMapping(value = "/brand", method = POST)
public @ResponseBody Map<String, Product> brandProduct() {
Map<String, Product> map = new HashMap<>();
map.put("dell", new Product(1003, "戴尔-XPS-13(XPS13D-9343-1808T)笔记本", 13000));
return map;
}
}
<p>
<textarea disabled="disabled"></textarea>
<button id="brand">brand</button>
</p>
<script type="text/javascript">
$(function(){
$("#brand").click(function() {
var self = $(this);
_post(self, function(data){
var result = data.dell.id + " " + data.dell.name + " " + data.dell.price;
self.parent().find("textarea").val(result);
});
});
});
</script>
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.1</version> </dependency>
示例代码下载