统一的Json组件和csv下载组件
java-web-common
Json组件
目标和用途
- 规范Json接口格式
Controller中一律返回Java object,组件将自动转换数据格式,满足Json接口格式- 统一处理Json接口中出现的异常,controller中不再需要
try-catch.Spring只有针对页面请求的SimpleMappingExceptionResolver异常解决方案,并没有针对使用@ResponseBody的方法异常处理
如何使用
- 在Spring配置文件中增加:
<context:component-scan base-package="ren.wenchao.web.common, your-controller-packages" /> - 不需要配置
<mvn:annotation-driven/> - 在需要返回Json的Controller的方法上标注:
@JsonResponseBody注解,默认是V2版本。可以参考TestController.java文件
示例
示例1
@RequestMapping(value = "/testJsonResponceBodyV2ReturnMap")
@JsonResponseBody(version = JsonResponseBody.Version.V2)
public Map testJsonResponceBodyV2ReturnMap() {
HashMap<Object, Object> hashMap = Maps.newHashMap();
hashMap.put("key", "value");
return hashMap;
}
返回:
{
"code":0,
"msg":"",
"data":{
"key":"value"
}
}
示例2
@RequestMapping(value = "/testJsonResponceBodyV1WithException")
@JsonResponseBody(version = JsonResponseBody.Version.V1)
public List<String> testJsonResponceBodyV1WithException() {
throw new RuntimeException("some exception");
}
返回:
{
"ret":false,
"msg":"some exception"
}
更多示例请参考:TestController.java
CSV组件
目标和用途
- 提供一个统一的CSV文件下载功能,各个系统就不需要重复编写了
- 简化「cvs下载功能」的实现
如何使用
- 假设你的业务model为
Payload,有可能你最终需要的csv的列和业务modelPayload的属性不完全一致,
因此你需要创建一个SomeCSVPayload(名字随意)来实现BaseCSVPayload接口,并制定csv的列头等信息 - 在对应的Controller方法上增加
@CSVResponceBody(fileName = "output", payloadClass = SomeCSVPayload.class),如下:
@RequestMapping(value = "/testCSVResponceBody")
@CSVResponceBody(fileName = "output", payloadClass = SomeCSVPayload.class)
public SomeCSVPayload testCSVResponceBody() {
return new SomeCSVPayload();
}
示例使用请查看TestController.java中的testCSVResponceBody方法
Excel组件
暂时没打算支持Excel下载,因为Excel需要区分版本,不同版本的限制也有些不同,而CSV比较通用,因此目前只支持csv
统一的Json组件和csv下载组件的更多相关文章
- SNF开发平台WinForm之六-上传下载组件使用-SNF快速开发平台3.3-Spring.Net.Framework
6.1运行效果: 6.2开发实现: 1.先在要使用的项目进行引用,SNF.WinForm.Attachments.dll文件. 2.在工具箱内新建选项卡->选择项,浏览找到文件SNF.WinFo ...
- js将json数据以csv格式下载
摘要: 最近有一个非项目的小需求,就是将项目开发分工文件化,方便后期管理维护.但是开发时,分工安排都是以json格式记录的,所以就做了一个将json数据以csv格式下载到本地. 代码: <!DO ...
- commons-fileupload组件和commons-io组件的详细下载
commons-fileupload组件和commons-io组件的详细下载 1. commons-fileupload组件的下载 下载地址:http://commons.apache.org/fil ...
- 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)
在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...
- 免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
前面介绍了六种.NET组件,其中有一种组件是写文件的压缩和解压,现在介绍另一种文件的解压缩组件SharpZipLib.在这个组件介绍系列中,只为简单的介绍组件的背景和简单的应用,读者在阅读时可以结合官 ...
- 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)
很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...
- 一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
在目前的软件项目中,都会较多的使用到对文档的操作,用于记录和统计相关业务信息.由于系统自身提供了对文档的相关操作,所以在一定程度上极大的简化了软件使用者的工作量. 在.NET项目中如果用户提出了相关文 ...
- [js开源组件开发]table表格组件
table表格组件 表格的渲染组件,demo请点击http://lovewebgames.com/jsmodule/table.html,git源码请点击https://github.com/tian ...
- Android组件系列----Android Service组件深入解析
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
随机推荐
- C#Excel文件加密实现,支持xlsx、docx、pptx(C#\Net\Asp.Net)
从此刻开始,我已封闭!概不接客! 像风一样的男人,像风一样的性格,无拘无束,不拘一格.那么问题来了,当风遇到沙,不一定你是风儿,我是沙儿的缠缠绵绵,.也许是漫天黄沙,飞粒走石.如果我们期望擒住这漫天的 ...
- 浅析天猫H5站点
前言 我们做前端开发的时候,很有可能会做一个竞品分析,比如我就做过去哪儿.艺龙.同程等与携程的移动站点竞品分析,竞品分析的目的一般是技术对比,但是更多的是业务对比,知己知彼,百战不殆:我们同时会借鉴. ...
- Ubantu【第一篇】:Ubantu中openssh连接
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- 地图中插入表格——ArcMap篇
在制作专题图的过程中,不但要有地理要素表示空间位置,经常还要在图的周围制作一些表格数据.这里对ArcMap中的插入方法进行总结. 方法一:插入对象 利用菜单中的"插入"-" ...
- 模块化之Spring3.0 web fragment和gradle构建项目
1.背景 模块化开发很久以前就开始普及的概念.但是到了企业实际情况中,真正把模块化作为系统架构的核心的不多.或者说对模块化有这个意识,但是具体到底该如何实现,有些模糊,同时也许因为项目紧.任务中. ...
- Play Framework 完整实现一个APP(十四)
添加测试 ApplicationTest.java @Test public void testAdminSecurity() { Response response = GET("/adm ...
- python脚本后台运行
问题描述: 环境: CentOS6.4 一个用python写的监控脚本test1.py,用while True方式一直运行,在ssh远程(使用putty终端)时通过以下命令启动脚本: python t ...
- (六)Spark-Eclipse开发环境WordCount-Java&Python版Spark
Spark-Eclipse开发环境WordCount 视频教程: 1.优酷 2.YouTube 安装eclipse 解压eclipse-jee-mars-2-win32-x86_64.zip Java ...
- 常用兼容浏览器js
功能:取得鼠标坐标.取得IE版本 一. 准备工作 1. 点击此下载 相关文件 二. 在浏览器中运行 compatJS.html 文件,点击相关功能按钮,即可看到效果
- [C]为什么发明指针?
指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序 ...