统一的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 ...
随机推荐
- git教程
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
- querySelector系列方法相比 getElementsBy 系列方法有什么区别?
querySelector 和 querySelectorAll 相比下面这些方法有什么区别? getElementsByTagName getElementsByClassName getElem ...
- java日历显示年份、月份
import java.util.Scanner;class CalendarMain{ //主函数入口 public static void main(String[] args) ...
- 记录一次Quartz2D学习(七)
(六)内主要讲述了图片的裁剪 本次主要讲交互 7.交互 7.1 通过外部刷新内部的显示效果 初始化的时候设定好初始值,调用setNeedsDisplay方法来重新绘制 - (instancetype ...
- 前端开发---ppt展示页面评论区支持动态交互效果
1. 工程地址:https://github.com/digitalClass/web_page 网站发布地址: http://115.28.30.25:8029/ 2. 用到的技术主要还是jquer ...
- [问题]apparmor 问题导致mysql切换datadir目录失败
问题: 在mysql切换datadir后,mysql服务无法启动.出现错误说plugin表无法读取,需要用mysql_upgrade创建.但是其实不是这个问题. 原因: apparmor 会限制程序对 ...
- 在Ubuntu X64上编译Hadoop
在之前的文章中介绍了如何直接在Ubuntu中安装Hadoop.但是对于64位的Ubuntu来说,官方给出的Hadoop包是32位的,运行时会得到警告: WARN util.NativeCodeLoad ...
- 4.MySQL 主主(m-m) 同步生产库标准同步操作实施流程
通过MySQL参数配置使用主主前提: 1.表的主键自增. ################################################################# #m1-m ...
- Linux环境搭建-在虚拟机中安装Centos7.0
最近在空闲时间学习Linux环境中各种服务的安装与配置,都属于入门级别的,这里把所有的学习过程记录下来,和大家一起分享. 我的电脑系统是win7,所以我需要在win7上安装一个虚拟机-VMware,然 ...
- Jmeter实现登录bugfree、新建bug、解决bug脚本(抓包工具实现)
环境 Chrome jmeter3.1 fiddler4 win7 32位 Linux CentOs6.4 bugfree3.0.1 链接:http://pan.baidu.com/s/1gfHpbp ...