• 统一的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

  • 相关阅读:
    mysql优化技巧
    ffmpeg3.3.2命令行参数笔记
    redis性能指标
    linux下ifconfig只剩下lo的解决方法
    symfony3 yml配置文件详解
    pt工具校验主从数据一致性之dsns方式
    K8S(01)二进制部署实践-1.15.5
    K8s之配置文件kube config生成
    [转]CA认证原理及CFSSL证书生成工具的使用
    K8s集成实战-使用spinnaker进行自动化部署
  • 原文地址:https://www.cnblogs.com/rollenholt/p/4933881.html
Copyright © 2020-2023  润新知