zoukankan      html  css  js  c++  java
  • 统一的Json组件和csv下载组件

    java-web-common

    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的列和业务model Payload的属性不完全一致,
      因此你需要创建一个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

  • 相关阅读:
    php 为什么new一个对象后面要加一个反斜杠
    c# 判断当前时间是否在某一时间段内
    关于Entity Framework的概念及搭建
    mvc 读写txt文档
    winform :DataGridView添加一列checkbox
    使用filter进行登录验证,并解决多次重定向问题
    关于Select选中问题
    错误:Parameter '0' not found.Available parameters are [arg1, arg0, param1, param2]的解决方法
    sql-省市区
    设置oracle主键自增长
  • 原文地址:https://www.cnblogs.com/rollenholt/p/4933881.html
Copyright © 2011-2022 走看看