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

  • 相关阅读:
    va_list/va_start/va_arg/va_end深入分析【转】
    Linux Kernel中断子系统来龙去脉浅析【转】
    Linux系统调用---同步IO: sync、fsync与fdatasync【转】
    Linux中变量#,#,@,0,0,1,2,2,*,$$,$?的含义【转】
    linux下的module_param()解释【转】
    Makefile 使用总结【转】
    FLASH的知识【转】
    Linux MTD系统剖析【转】
    linux的mtd架构分析【转】
    linux设备树笔记__dts基本概念及语法【转】
  • 原文地址:https://www.cnblogs.com/rollenholt/p/4933881.html
Copyright © 2011-2022 走看看