我们当前的增删改查基本完成
我们当前的情况是在理想状态下完成的
但是实际开发中我们要抛出异常
业务在进行处理的时候
数据格式就是这样
前端拿到的信息我们应该去处理
前端如何去处理得去斟酌
即使前端出现了异常
我们也要让返回的异常信息让前端成功读取
我们有一个异常处理器
Spring MVC 属于 controller 层的技术
放这里就行
定义全新的数据访问格式
- package com.bigdata1421.ssmp.controller.utils;
-
- import lombok.Data;
-
- @Data
- public class Result {
- private Boolean flag;
- private Object data;
- private String msg;
- public Result(Boolean flag){
- this.flag=flag;
- }
- public Result(Boolean flag,Object data){
- this.flag=flag;
- this.data=data;
- }
-
- public Result(Boolean flag,String msg){
- this.flag=flag;
- this.msg=msg;
- }
-
- }
也可以这样改写
异常处理类
- package com.bigdata1421.ssmp.controller.utils;
-
- import org.springframework.web.bind.annotation.ExceptionHandler;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.bind.annotation.RestControllerAdvice;
-
- //作为 spring mvc 的异常处理器
- @RestControllerAdvice
- public class ProjectExceptionAdvice {
-
- @ExceptionHandler
- public Result doException(Exception ex){
- //记录日志
- //通知运维
- //通知开发
- ex.printStackTrace();
- return new Result( "服务器故障,请稍后重试");
- }
-
- }
Result类
- package com.bigdata1421.ssmp.controller.utils;
-
- import lombok.Data;
-
- @Data
- public class Result {
- private Boolean flag;
- private Object data;
- private String msg;
- public Result(Boolean flag){
- this.flag=flag;
- }
- public Result(Boolean flag,Object data){
- this.flag=flag;
- this.data=data;
- }
-
- public Result(String msg){
- this.flag=false;
- this.msg=msg;
- }
-
- }
这样就能拿到报错信息
- //修改
- handleEdit() {
- //与添加功能绑定的是一个数据模型
- //绑定的是确定按钮 发起请求
- axios.put("/users", this.formData).then((res) => {
- //判断当前操作是否成功
- if (res.data.flag) {
- //关闭弹层
- this.cancel();
- this.$message.success("人员数据修改成功");
- }else {
- this.$message.error(res.data.msg);
- }
- }).finally(()=>{
- //重新加载页面
- this.getAll();
- });
- },
空体判断
抛出异常给Spring mvc的异常消息处理机制
但是这样我们的代码有的是在前端页面中写的
有的是在服务器的三层架构里写的 这样不好
这样不好
先是异常处理
之后是代码核心逻辑处理
判断flag是否为ture 还是false 添加成功
进阶版
页面消息处理
没有传递消息加载默认消息
传递消息后加载指定消息
我们后端和前端都要进行处理
我们主要是在表现层Controller中进行消息统一处理
目的是国际化
让异常处理的时候交给后端统一处理
这样前端就能简化书写
小结