实用的返回结果封装

使用示例

/**
* @Author: huangwenjun
* @Description:
* @Date: Created in 13:59 2018/3/28
**/
@RestController
@CrossOrigin
@RequestMapping("baofu")
public class ConfigDemoController { @Autowired
private BaoFooConfig baoFooConfig; @GetMapping("success")
public Result<String> success() {
return Result.success("success !");
} @GetMapping("bulid")
public Result<String> bulid() {
return Result.build(ResultEnum.WAIT);
} @GetMapping("error")
public Result<String> error() {
return Result.success("error !");
}
}

效果


{"code":"0000","msg":"成功","data":"success !"} {"code":"1111","msg":"正在处理结果","data":null} {"code":"9999","msg":"error !","data":null}

Result

public class Result<T> {

    /**
* 错误码
*/
private String code; /**
* 提示信息
*/
private String msg; /**
* 具体的内容
*/
private T data; /**
* 成功时候的调用
* @param <T>
* @return
*/
public static <T> Result<T> success(T data) {
return new Result<>(data);
} /**
* 根据返回的状态对象, 构建返回结果
* @param resultEnum
* @param <T>
* @return
*/
public static <T> Result<T> build(ResultEnum resultEnum) {
return new Result<>(resultEnum);
} /**
* 根据 code, 和 msg 构建返回结果
* @param code
* @param msg
* @param <T>
* @return
*/
public static <T> Result<T> build(String code, String msg) {
return new Result<T>(code, msg);
} /**
* 根据 code, 和 msg, 和 data 构建返回结果
* @param code
* @param msg
* @param <T>
* @return
*/
public static <T> Result<T> build(String code, String msg, T data) {
return new Result<T>(code, msg, data);
} /**
* 失败的调用
* @param codeMsg
* @param <T>
* @return
*/
public static <T> Result<T> error(String codeMsg) {
return new Result<>(codeMsg);
} /**
* 失败的调用 将返回结果传入
* @param data
* @param <T>
* @return
*/
public static <T> Result<T> error(T data) {
return new Result<>(ResultEnum.ERROR.getCode(), ResultEnum.ERROR.getMsg(), data);
} private Result(T data) {
this.code = ResultEnum.SUCCESS.getCode();
this.msg = ResultEnum.SUCCESS.getMsg();
this.data = data;
} private Result(String msg) {
this.code = ResultEnum.ERROR.getCode();
this.data = null;
this.msg = msg;
} private Result(ResultEnum resultEnum) {
this.code = resultEnum.getCode();
this.msg = resultEnum.getMsg();
} private Result(String code, String msg) {
this.code = code;
this.msg = msg;
} private Result(String code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
}

ResultEnum

public enum ResultEnum {

    SUCCESS("0000", "成功"),
ERROR("9999", "失败"), WAIT("1111", "正在处理结果"); private String code; private String msg; ResultEnum(String code, String msg) {
this.code = code;
this.msg = msg;
} public String getCode() {
return code;
} public String getMsg() {
return msg;
}
}

Java Web 实用返回结果封装的更多相关文章

  1. JAVA WEB SQLHelper类的封装

    在这次做项目中,我对自己最满意的就是封装了一下SQLHelper类,我对自己感到骄傲主要是 我是初学者,我刚开始不知道可以这样做,我只是想着试着去这样做了,结果真的可以,所以我 在我的模块就自己封装了 ...

  2. 五分钟学Java:如何才能学好Java Web里这么多的技术

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...

  3. 利用过滤器Filter和特性Attribute实现对Web API返回结果的封装和统一异常处理

    在我们开发Web API应用的时候,我们可以借鉴ABP框架的过滤器Filter和特性Attribute的应用,实现对Web API返回结果的封装和统一异常处理,本篇随笔介绍利用AuthorizeAtt ...

  4. 在Java web项目中防止用户注销后使用浏览器中的“后退”按钮返回注销前页面

    一背景 公司安全整改, 要求:系统中对于关键业务操作应确保使用浏览器"后退"功能无法回到上一步操作界面. 提供:凭证提供所有被检查系统关键业务操作后回退视频,视频显示关键业务操作后 ...

  5. java web(四)文件上传与下载

     一.文件上传原理 1.在TCP/IP中,最早出现的文件上传机制是FTP ,它是将文件由客户端发送到服务器的标准机制:但是在jsp使用过程中不能使用FTP方法上传文件,这是由jsp运行机制所决定. 通 ...

  6. Java Web项目中连接Access数据库的配置方法

    本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...

  7. java web学习笔记-jsp篇

    1.java web简介 1.1静态页面与动态页面   表现形式 所需技术 静态网页 网页内容固定,不会更新 html,css 动态网页 网页内容由程序动态显示,自动更新 html,css,DB,ja ...

  8. JAVA web 框架集合

    “框架”犹如滔滔江水连绵不绝, 知道有它就好,先掌握自己工作和主流的框架: 在研究好用和新框架. 主流框架教程分享在Java帮帮-免费资源网 其他教程需要时间制作,会陆续分享!!! 152款框架,你还 ...

  9. Java Web教程——检视阅读

    Java Web教程--检视阅读 参考 java web入门--概念理解.名词解释 Java Web 教程--w3school 蓝本 JavaWeb学习总结(一)--JavaWeb开发入门 小猴子mo ...

随机推荐

  1. 15、python学习手册之:元组、文件及其他

    1.使用文本来存储python对象时,必须使用转换工具把对象转成字符串 2.内置函数eval可以把字符串当做可执行程序代码:eg  s = ‘[1,2,3]’    eval(s) -->[1, ...

  2. MES制造系统

    给大家介绍一个非常不错的MES专业产品网站,http://www.OrBitMES.com 上面分为初.中.高各级的难得的MES产品学习资料下载, http://www.orbitmes.com/Pr ...

  3. oracle_经常使用分组函数

     oracle_经常使用分组函数 ①分组函数 1.max(column):求最大值,对数据类型没有要求,随意数据类型都能够 2.min(column):求最小值,对数据类型没有要求,随意数据类型都 ...

  4. Traveler Nobita (zoj 3456 最小生成树)

    Traveler Nobita Time Limit: 2 Seconds      Memory Limit: 65536 KB One day, Nobita used a time machin ...

  5. 【例题 6-11 UVA-297】Quadtrees

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 发现根本不用存节点信息. 遇到了叶子节点且为黑色,就直接覆盖矩阵就好(因为是并集); [代码] #include <bits/ ...

  6. Java中关于static语句块的理解

    Java中关于static语句块的理解 一.static块会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法. 实例一 public class A{ String name ...

  7. 具体解释。。设计模式5——DAO。。studying

    设计模式5--DAO ★ 场景和问题 在Java程序中,常常须要把数据持久化.也须要获取持久化的数据,可是在进行数据持久化的过程中面临诸多问题 (如:数据源不同.存储类型不同.供应商不同.訪问方式不同 ...

  8. 让自己的软件实现拖拽打开文件(覆盖WM_DROPFILES,使用DragQueryFile,DragFinish API函数)

    作者: 帅宏军 //声明 protected    procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES; --------- ...

  9. C语言深度剖析-----数组基础

    数组的概念 数组的大小 实例 内存占用 长度 a[5] 不指定初始值的话,随机给数值 数组地址与数组名 a为数组首地址,&a为数组地址,值相等,意义不同 数组名不可以直接相等 例:主义区分指针 ...

  10. 表单提交数据格式form data

    前言: 最近遇到的最多的问题就是表单提交数据格式问题了. 常见的三种表单提交数据格式,分别举例说明:(项目是vue的框架) 1.application/x-www-form-urlencoded 提交 ...