@ResponseBody 将内容或对象作为 HTTP 响应正文返回,使用@ResponseBody将会跳过视图处理部分,而是调用适合HttpMessageConverter,将返回值写入输出流。
Spring 3.X系列增加了新注解 @ResponseBody , @RequestBody
@RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象。
@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。
HttpMessageConverter 接口,需要开启 <mvc:annotation-driven /> 。
AnnotationMethodHandlerAdapter 将会初始化7个转换器,可以通过调用 AnnotationMethodHandlerAdapter的 getMessageConverts() 方法来获取转换器的一个集合 List<HttpMessageConverter>
引用
ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter
XmlAwareFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
MappingJacksonHttpMessageConverter
@RequestMapping(value = "/person/profile/{id}", method = RequestMethod.GET)
public @ResponseBody
Personporfile( @PathVariable("id") int uid){
return new Person(uid,name,status);
}
使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象。
@ResponseBody可以标注任何对象,由Srping完成对象——协议的转换。
http://my.oschina.net/u/1012289/blog/129321
1.如果不配置@ResponseBody,也可以使用response输出数据然后 return null,达到返回json字符串的效果。
String str ="{\"a\":\"中国\",\"b\",:\"日本\",\"c\":\"新加坡\",\"c\":\"美国\"}";
PrintWriter pw = null;
try {
pw = response.getWriter();
pw.write(str);
pw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2.方法返回实体类对象
返回结果是json字符串{“属性”:”值”,”属性”:null}实体类对象属性为空时,value为null。
3.方法返回实体类对象集合List
[{“属性”:”值”,”属性“:”值”...},{{“属性”:”值”,”属性“:”值”...},{{“属性”:”值”,”属性“:”值”...},{{“属性”:”值”,”属性“:”值”...}...]
4.方法返回Map集合
{key:{实体类对象属性键值对},key2:{实体类对象属性键值对},key3:{实体类对象属性键值对}}