一、枚举类编写ResponseCode

package com.boulderaitech.common;

/**
* 编写枚举类的步骤
* (1)编写所需的变量
* (2)编写枚举类构造方法
* (3)编写枚举的值,调用构造方法,使用逗号隔开
* (4)编写方法获取枚举类中对应的值
*/
public enum ResponseCode {
//(3)编写枚举的值,调用构造方法,使用逗号隔开
SUCCESS(0,"SUCCESS"),
ERROR(1,"ERROR");
//(1)编写所需的变量
private final int code;
private final String desc;
//(2)编写枚举类构造方法
ResponseCode(int code,String desc) {
this.code=code;
this.desc=desc;
}
//(4)编写方法获取枚举类中对应的值
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

二、含泛型的通用返回类ServerResponse

package com.boulderaitech.common;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.io.Serializable;

//用于封装数据的类,加泛型实现序列化接口
//通过注解约束其序列化方式,即非空的类不允许序列化
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class ServerResponse<T> implements Serializable {
private int status;
private String msg;
private T data;
//编写不同的构造方法,更改为private,禁止外部创建该类的对象
private ServerResponse(int status) {
this.status = status;
} private ServerResponse(int status, String msg) {
this.status = status;
this.msg = msg;
} private ServerResponse(int status, T data) {
this.status = status;
this.data = data;
} private ServerResponse(int status, String msg, T data) {
this.status = status;
this.msg = msg;
this.data = data;
}
//提供get方法,后续要返回json数据,没有get方法无法返回数据
public int getStatus() {
return status;
} public String getMsg() {
return msg;
} public T getData() {
return data;
}
//在内部提供静态方法供外部访问
public static <T> ServerResponse<T> createSuccess() {
return new ServerResponse<>(ResponseCode.SUCCESS.getCode());
}
public static <T> ServerResponse<T> createSuccessMsg(String msg) {
return new ServerResponse<>(ResponseCode.SUCCESS.getCode(),msg);
}
public static <T> ServerResponse<T> createSuccessData(T data) {
return new ServerResponse<>(ResponseCode.SUCCESS.getCode(),data);
}
public static <T> ServerResponse<T> createSuccessMsgData(String msg,T data) {
return new ServerResponse<>(ResponseCode.SUCCESS.getCode(),msg,data);
}
public static <T> ServerResponse<T> createErrorMsg(String errorMsg) {
return new ServerResponse<>(ResponseCode.ERROR.getCode(),errorMsg);
} }

【Java Web】项目通用返回模块ServerResponse:枚举code状态码、泛型返回值、序列化注解限制数据的更多相关文章

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

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

  2. java web项目答辩答辩题总结(书本网上语言答辩+自己的语言答辩)

    答辩每个人的总分为1.5分.每个人主要问3个问题. 开发流程===>系统架构====>项目模块+功能===>项目得失重定向与转发:?九个隐式对象?get与post的区辨:?jsp有静 ...

  3. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  4. JAVA WEB项目中各种路径的获取

    JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在s ...

  5. Java Web系列:Java Web 项目基础

    1.Java Web 模块结构 JSP文件和AXPX文件类似,路径和URL一一对应,都会被动态编译为单独class.Java Web和ASP.NET的核心是分别是Servlet和IHttpHandle ...

  6. IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目

    转自:http://www.php-note.com/article/detail/854 IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目 作者:php- ...

  7. Intellij IDEA Java web 项目搭建

    Java web 项目搭建 简介 在上一节java web环境搭建中,我们配置了开发java web项目最基本的环境,现在我们将采用Spring MVC+Spring+Hibernate的架构搭建一个 ...

  8. 使用IntelliJ IDEA和Maven构建Java web项目并打包部署

    爱编程爱分享,原创文章,转载请注明出处,谢谢! http://www.cnblogs.com/fozero/p/6120375.html 一.背景 现在越来越多的人使用IntelliJ IDEA工具进 ...

  9. 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程

    http://jijiaa12345.iteye.com/blog/1739754 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程 本文是一篇在Myeclipse下构建Jav ...

  10. Intellij IDEA采用Maven+Spring MVC+Hibernate的架构搭建一个java web项目

    原文:Java web 项目搭建 Java web 项目搭建 简介 在上一节java web环境搭建中,我们配置了开发java web项目最基本的环境,现在我们将采用Spring MVC+Spring ...

随机推荐

  1. 前端实现docx、pdf格式文件在线预览

    theme: vuepress highlight: atelier-heath-light 介绍 在业务中,如果遇到文档管理类的功能,会出现需要在线预览的业务需求,本文主要是通过第三方库来实现文档预 ...

  2. Rust-函数

    函数结构 函数要点 函数名和变量名使用蛇形命名法(snake case),例如 fn add_two() -> {} 函数的位置可以随便放,Rust 不关心我们在哪里定义了函数,只要有定义即可 ...

  3. 谷歌MapReduce经典论文翻译(中英对照)

    MapReduce: Simplified Data Processing on Large Clusters(MapReduce: 简化大型集群下的数据处理) 作者:Jeffrey Dean and ...

  4. Nginx相关模块学习使用实践指南

    转载自:https://www.bilibili.com/read/cv16150654?spm_id_from=333.999.0.0 0x01 Nginx 常用模块使用实践 官方模块使用手册:ht ...

  5. Elasticsearch的mapping讲解

    映射是定义文档及其包含的字段的存储和索引方式的过程. 映射定义具有: 元字段 元字段用于自定义如何处理关联的文档元数据.包括文档 _index,_id和 _source领域. 字段或属性 映射包含pr ...

  6. 6.使用nexus3配置yum私有仓库

    yum相较于rpm,能够更好地解决安装软件时的依赖包问题,使用yum安装更简单更方便.搭建本地YUM源服务器,可以避免升级安装软件时占用公网带宽:有了本地YUM源服务器,可以解决无法连接Interne ...

  7. 在Kuboard上安装 Ingress Controller

    快速安装 # 只在 master 节点执行 kubectl apply -f https://kuboard.cn/install-script/v1.18.x/nginx-ingress.yaml ...

  8. 使用Fluentd进行简单流处理

    在某些日志采集场景中,我们需要对数据流进行一些转换.比如,我们可能需要从日志记录中提取某些字段以进行错误告警,或向日志记录中插入新的字段用以后续的分析. 本文简单介绍一下使用Fluentd进行数据操作 ...

  9. SonarQube 插件之 Issues Report & SonarLint 的配置及使用

    转载自:https://cloud.tencent.com/developer/article/1010599 1.Issues Report Plugins 介绍 使用 Issues Report ...

  10. AdaBoost:自适应提升算法的原理及其实现

    AdaBoost:通过改变训练样本权重来学习多个弱分类器并线性组合成强分类器的Boosting算法. Boosting方法要解答的两个关键问题:一是在训练过程中如何改变训练样本的权重或者概率分布,二是 ...