【个人博客项目 4】自定义全局返回类型模板、自定义全局异常,并以json形式返回在页面

首先添加全局的信息返回格式

自定义一个全局的返回格式,使返回结果更加规范化,前后端联调的时候能够更加轻松

在model新增实体类AllResultMessage
package com.swyee01.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author Swyee
 * @Program job
 * @date 2020/8/9  0:38
 **/
@Data 
@AllArgsConstructor
@NoArgsConstructor
public class AllResultMessage<T> {
        private String code;
        private String msg;
        private T data;

}
//注解式通过lombok实现的,如果没有安装插件,手动添加get set和构造方法
输出展示
  • 返回代码写法
package com.swyee01.controller;

import com.swyee01.model.AllResultMessage;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author swyee
 * @Program Blog
 * @Description:
 * @date 2020/8/9  1:59
 **/
@Controller //加上注解可以被springMvc管理
@ResponseBody //返回json形式
// 上面两个注解可以简写成 @RestController
@RequestMapping(value = "test") //需要在url拼接的路径
public class TestController {

    @RequestMapping(value = "aa")//同样是配置路径拼接,加上上面的配置,路径为 test/aa.do  因为我们在web的配置,我们只会处理以.do结尾的请求
    public AllResultMessage<String> test(){

        return new AllResultMessage<>("SUCCESS","结果返回成功了","这是数据,可以返回任何类型值");
    }
}

  • 运行 http://localhost:8880/test/aa.do
    在这里插入图片描述

自定义全局异常

  • 新建一个package Exception 专门用来存自定义异常
  • 新建异常类 CustomException
package com.swyee01.Exception;

import lombok.Data;

/**
 * @author Swyee
 * @Program Blog
 * @Description:
 * @date 2020/8/9  1:14
 **/
@Data
public class CustomException extends RuntimeException { //运行时异常
    private String code;
    private String msg;

    public CustomException(String code, String msg) {
        super(msg);
        this.code = code;
        this.msg = msg;
    }
}

  • 全局异常处理 新建 CustomExceptionHandler 对CustomException 进行监视
package com.swyee01.Exception;

import com.swyee01.model.AllResultMessage;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author Swyee
 * @Program Blog
 * @Description:
 * @date 2020/8/9  1:16
 **/
@ControllerAdvice//这个注解可以对全局进行处理
public class CustomExceptionHandler {
    @ExceptionHandler(value = CustomException.class)
    @ResponseBody
    public AllResultMessage<Object> handle(CustomException e) {
        return new AllResultMessage<>(e.getCode(), e.getMsg(), null);//返回AllResultMessage形式的异常
    }
}

异常展示
  • controller
package com.swyee01.controller;

import com.swyee01.Exception.CustomException;
import com.swyee01.model.AllResultMessage;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author swyee
 * @Program Blog
 * @Description:
 * @date 2020/8/9  1:59
 **/
@Controller //加上注解可以被springMvc管理
@ResponseBody //返回json形式
// 上面两个注解可以简写成 @RestController
@RequestMapping(value = "test") //需要在url拼接的路径
public class TestController {

    @RequestMapping(value = "aa")//同样是配置路径拼接,加上上面的配置,路径为 test/aa.do  因为我们在web的配置,我们只会处理以.do结尾的请求
    public AllResultMessage<String> test(){
        throw new CustomException("error","发生异常了");
        //return new AllResultMessage<>("SUCCESS","结果返回成功了","这是数据,可以返回任何值");
    }
}

执行 http://localhost:8880/test/aa.do

在这里插入图片描述

结束

上一篇:【个人博客项目 3】SSM中使用druid连接数据库的方法、一般项目开发需要在pom中导入的包、web配置

上一篇:【个人博客项目 3】SSM中使用druid连接数据库的方法、一般项目开发需要在pom中导入的包、web配置

【个人博客项目 5】ssm整合redis,并对数据做简单的插入,实现验证码的功能

下一篇:【个人博客项目 5】ssm整合redis,并对数据做简单的插入,实现验证码的功能

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值