ResultEnum.java
定义一个枚举类来存储全局错误状态码和消息,方便后面管理修改
枚举类补充:
enum Test1{
RED("1"),GREEN("2"),YELLOW("3");
//方法中有参数的话,里面的参数也需要写
private Test1(String name) {}
//有抽象方法的话,需要实现该抽象方法
//abstract void test();
}
//枚举底层就是这样的
class Test2{
private Test2() {}
public static final Test2 RED = new Test2();
public static final Test2 GREEN = new Test2();
public static final Test2 YELLOW = new Test2();
}
package com.xiaomin.springboot_shiro.enums;
/**
* @author 晓敏
* @create 2020-03-12 15:36
* 全局错误状态码定义
* 使用枚举来进行定义状态和消息
*/
public enum ResultEnum {
SUCCESS(200,"成功"),
FEIFA(110,"非法操作"),
ERROR(500,"出错"),;
//响应业务状态
private Integer status;
//响应消息
private String msg;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
ResultEnum(Integer status, String msg) {
this.status = status;
this.msg = msg;
}
}
注意:上面使用枚举类来定义全局错误相当于下面这个类
public class CodeMsg {
private int code;
private String msg;
//通用的错误码
public static CodeMsg SUCCESS = new CodeMsg(0, "success");
public static CodeMsg SERVER_ERROR = new CodeMsg(500100, "服务端异常");
public static CodeMsg BIND_ERROR = new CodeMsg(500101, "参数校验异常:%s");
//登录模块 5002XX
public static CodeMsg SESSION_ERROR = new CodeMsg(500210, "Session不存在或者已经失效");
public static CodeMsg PASSWORD_EMPTY = new CodeMsg(500211, "登录密码不能为空");
public static CodeMsg STUDENTID_EMPTY = new CodeMsg(500212, "学号不能为空");
public static CodeMsg STUDENTID_ERROR = new CodeMsg(500213, "学号格式错误");
public static CodeMsg STUDENTIDE_NOT_EXIST = new CodeMsg(500214, "学号不存在");
public static CodeMsg PASSWORD_ERROR = new CodeMsg(500215, "密码错误");
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
public CodeMsg fillArgs(Object... args) {
int code = this.code;
String message = String.format(this.msg, args);
return new CodeMsg(code, message);
}
private CodeMsg(int code,String msg) {
this.code = code;
this.msg = msg;
}
}
ResultVo.java
HTTP响应结果处理类
package com.xiaomin.login_redis.pojo.vo;
import com.xiaomin.login_redis.enums.ResultEnum;
/**
* 响应结果处理类
*/
public class ResultVo<T> {
//响应业务状态
private Integer status;
//响应业务消息
private String msg;
//响应业务数据
private T data;
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public ResultVo() {
}
public ResultVo(ResultEnum enums) {
this.status = enums.getStatus();
this.msg = enums.getMsg();
this.data = data;
}
}
ResultUtil.java
封装成工具类
package com.xiaomin.springboot_shiro.enums;
/**
* @author jattxgt
* @create 2020-03-12 21:19
*/
public class ResultUtil {
/**
*
* @return 响应data为空的消息体
*/
public static ResultVo success(){
return success(null);
}
/**
*响应成功的消息
* @param object 响应data数据
* @return
*/
public static ResultVo success(Object object){
ResultVo resultVo = new ResultVo();
resultVo.setStatus(ResultEnum.SUCCESS.getStatus());
resultVo.setMsg(ResultEnum.SUCCESS.getMsg());
resultVo.setData(object);
return resultVo;
}
/**
*响应错误的消息
* @param object 响应错误data数据
* @return
*/
public static ResultVo error(Object object){
ResultVo resultVo = new ResultVo();
resultVo.setStatus(ResultEnum.ERROR.getStatus());
resultVo.setMsg(ResultEnum.ERROR.getMsg());
resultVo.setData(object);
return resultVo;
}
/**
* 响应自定义构建消息体
* @param resultEnum 响应的状态和消息
* @param data 响应数据
* @return
*/
public static ResultVo build(ResultEnum resultEnum,Object data){
ResultVo resultVo = new ResultVo();
resultVo.setStatus(resultEnum.getStatus());
resultVo.setMsg(resultEnum.getMsg());
resultVo.setData(data);
return resultVo;
}
}
示 例:
@RequestMapping("/test")
@ResponseBody
public ResultVo test(){
List<User> users = userMapper.selectList(null);
//return ResultUtil.success(null);
return ResultUtil.build(ResultEnum.FEIFA,null);
}