Spring注解@ResponseBody
2015-12-30 17:04
453 查看
SpringMVC层跟JSon结合,几乎不需要做什么配置,代码实现也相当简洁。再也不用为了组装协议而劳烦辛苦了!
Spring 3.X系列增加了新注解@ResponseBody
@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。
HttpMessageConverter接口,需要开启<mvc:annotation-driven
/>。
AnnotationMethodHandlerAdapter将会初始化7个转换器,可以通过调用AnnotationMethodHandlerAdapter的getMessageConverts()方法来获取转换器的一个集合
List<HttpMessageConverter>
引用
ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter
XmlAwareFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
MappingJacksonHttpMessageConverter
可以理解为,只要有对应协议的解析器,你就可以通过几行配置,几个注解完成协议——对象的转换工作!
PS:Spring默认的json协议解析由Jackson完成。
主要需要spring-webmvc、jackson-mapper-asl两个包,其余依赖包Maven会帮你完成。至于log4j,我还是需要看日志嘛。
作用:
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
案例
需求分析:需要 利用 out 对象返回给财付通是否接收成功 。那么将需要如下代码:
[java] view
plaincopy
/**
* 返回处理结果给财付通服务器。
* @param msg: Success or fail。
* @throws IOException
*/
public void sendToCFT(String msg) throws IOException {
String strHtml = msg;
PrintWriter out = this.getHttpServletResponse().getWriter();
out.println(strHtml);
out.flush();
out.close();
}
那么在Controller中的方法若用此方法注解
[java] view
plaincopy
//财付通返回URL
@ResponseBody
@RequestMapping("/pay/tenpay")
public String tenpayReturnUrl(HttpServletRequest request, HttpServletResponse response) throws Exception {
unpackCookie(request, response);
payReturnUrl.payReturnUrl(request, response);
return "pay/success";
}
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
那么只需删除注解:@ResponseBody 便可以返回页面pay/success.jsp。而且达到了与客户端后台交互的效果。即:
[java] view
plaincopy
out.println(strHtml);
且不会在页面上输出字符串。
Spring 3.X系列增加了新注解@ResponseBody
@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。
HttpMessageConverter接口,需要开启<mvc:annotation-driven
/>。
AnnotationMethodHandlerAdapter将会初始化7个转换器,可以通过调用AnnotationMethodHandlerAdapter的getMessageConverts()方法来获取转换器的一个集合
List<HttpMessageConverter>
引用
ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter
XmlAwareFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
MappingJacksonHttpMessageConverter
可以理解为,只要有对应协议的解析器,你就可以通过几行配置,几个注解完成协议——对象的转换工作!
PS:Spring默认的json协议解析由Jackson完成。
主要需要spring-webmvc、jackson-mapper-asl两个包,其余依赖包Maven会帮你完成。至于log4j,我还是需要看日志嘛。
作用:
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
案例
需求分析:需要 利用 out 对象返回给财付通是否接收成功 。那么将需要如下代码:
[java] view
plaincopy
/**
* 返回处理结果给财付通服务器。
* @param msg: Success or fail。
* @throws IOException
*/
public void sendToCFT(String msg) throws IOException {
String strHtml = msg;
PrintWriter out = this.getHttpServletResponse().getWriter();
out.println(strHtml);
out.flush();
out.close();
}
那么在Controller中的方法若用此方法注解
[java] view
plaincopy
//财付通返回URL
@ResponseBody
@RequestMapping("/pay/tenpay")
public String tenpayReturnUrl(HttpServletRequest request, HttpServletResponse response) throws Exception {
unpackCookie(request, response);
payReturnUrl.payReturnUrl(request, response);
return "pay/success";
}
@ResponseBody
作用:该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
那么只需删除注解:@ResponseBody 便可以返回页面pay/success.jsp。而且达到了与客户端后台交互的效果。即:
[java] view
plaincopy
out.println(strHtml);
且不会在页面上输出字符串。
相关文章推荐
- spring缓存实例
- 【算法基础】java中的移位运算符和位运算符
- Java Web(9)struts 2 validation result设置
- JVM(Java虚拟机)优化大全和案例实战
- java内存模型的三个代
- Java 泛型通配符?解惑
- Java总结篇系列:Java泛型
- spring 与 mybatis整合,mybatis注解不起作用
- AIDL中使用java类
- CSDN博客文章之Java资源
- 关于 "java中常量定义在interface中好还是定义在class中好" 的一些思考
- JAVA常见问题总结
- Spring各jar包的作用(转载)
- Java设计模式_行为型_观察者模式_任意行为的监听
- Java中判断String不为空的问题
- Java类集学习(五)集合的输出
- java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries
- ubuntu启动eclipse时出错cannot open display
- jsonp和java示例
- 希望能结识更多热爱Java的小伙伴