一个用户的操作,比如登录,就可能会有很多种情况,用户层面的:账号错误、密码错误;服务器层面的:数据库错误等等情况。但是我们正常的是直接把一个参数解析成json对象返回给前端,那我们如何去判断是哪一种情况,并给用户一个反馈信息呢?
解决思路我们平时可以直接解析一个java对象成json返回前端
//1. 创建一个user对象 User user = new User(); //2。 解析成json对象 String json = JSONObject.toJSONString(user); //3. 返回前端 PrintWriter writer = response.getWriter(); writer.write(json); writer.close();
既然可以直接解析一个java对象,那我们能不能新建一个类,里面可以存java对象(data:前端需要的数据),编码信息(code:提供前端判断)和提示信息(msg:提示用户的信息)。
解决办法package cn.stopyc.constant; public class Result{ private Integer code; private String msg; private T data; public Result() { super(); } public Result(Integer code, String msg, T data) { this.code = code; this.msg = msg; this.data = data; } public Result(Integer code, String msg) { this.code = code; this.msg = msg; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } 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; } @Override public String toString() { return "Result{" + "code=" + code + ", msg='" + msg + ''' + ", data=" + data + '}'; } } @WebServlet("/user public enum ResultEnum { //自定义 //通用 UNKNOWN_ERROR(-1,"未知错误"), SUCCESS(200,"成功"), SERVER_INTERNAL_ERROR(500,"服务器内部错误"), RESOURCE_NOT_FOUND(404,"资源未找到"), PARAMETER_NOT_VALID(400,"参数不合法"), DATABASE_ERROR(600,"数据库操作错误"), //用户模块 5002XX PASSWORD_FAILED(500200,"密码错误"), REPEAT_NAME(500210,"用户名重复"), FIND_USER_FAILED(500220,"用户名不存在"), CHECK_CODE_ERROR(500230,"验证码错误"), //任务模块 6002XX NO_TASK(600200,"当前没有任务"), //....... ; private Integer code; private String msg; ResultEnum(Integer code, String msg) { this.code = code; this.msg = msg; } public Integer getCode() { return code; } public String getMsg() { return msg; } }
那么以后的service层封装结果集的时候,直接调用枚举
return new Result<>(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getMsg(), user);



