本站网址
www.kjyfx.com

『Java』Spring Boot项目中VO对象及全局异常处理

一、VO对象

vo(view object)值对象:视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。

package com.kjyfx.common.vo;

import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * VO:借助此对象封装服务端的影响数据
 * 1)响应的状态码 (1表示正常数据,0表示异常数据)
 * 2)响应消息 (呈现给用户的消息,例如一个弹出框中的数据)
 * 3)响应数据 (要呈现的正常数据,例如日志记录信息)
 * 4)....
 */
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class JsonResult implements Serializable{
    private static final long serialVersionUID = 5415540679197546732L;
    private int state=1;            /**状态码,默认正常为1*/
    private String message="ok";    /**状态码对应的状态信息*/
    private Object data;            /**正常数据*/
   
    public JsonResult(String message) {
        this.message=message;
    }

    public JsonResult(Object data) {
        this.data=data;
    }

    /**封装异常数据*/
    public JsonResult(Throwable e) {
        this.state=0;
        this.message=e.getMessage();
    }
}


二、全局异常处理

package com.kjyfx.common.web;

import org.apache.shiro.ShiroException;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authz.AuthorizationException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import com.kjyfx.common.vo.JsonResult;
import lombok.extern.slf4j.Slf4j;

@ControllerAdvice   //使用此注解描述的类为一个全局异常处理类
@Slf4j
public class GlobalExceptionHandler {
    //对于运行时异常,也可自定义异常
    @ExceptionHandler(RuntimeException.class)   //@ExceptionHandler 注解描述的方法为一个异常处理方法
    @ResponseBody
    public JsonResult doHandleRuntimeException(RuntimeException e){
        log.error(e.getMessage());
        e.printStackTrace();
        return new JsonResult(e);
    }


    //对于其他非运行时异常处理可类比以下方法
    @ExceptionHandler(ShiroException.class)
    @ResponseBody
    public JsonResult doHandleShiroException(ShiroException e){
        JsonResult r=new JsonResult();
        r.setState(0);
        if(e instanceof UnknownAccountException) {
            r.setMessage("账户不存在");
        }else if(e instanceof LockedAccountException) {
            r.setMessage("账户已被禁用");
        }else if(e instanceof IncorrectCredentialsException) {
            r.setMessage("密码不正确");
        }else if(e instanceof AuthorizationException) {
            r.setMessage("没有此操作权限");
        }else {
            r.setMessage("系统维护中");
        }
        e.printStackTrace();
        return r;
    }
}

 

 

赞(3) 打赏
未经允许不得转载:所有资源由个人搜集整理自互联网,仅用于学习交流使用,请勿用于其他商业用途。如有侵权,请联系2448941602@qq.com删除科技云分享 » 『Java』Spring Boot项目中VO对象及全局异常处理
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

更多资源,尽在微信公众号【科技云分享】

关注公众号加入Q群

我叫科技云,感谢您的支持~

支付宝扫一扫打赏

微信扫一扫打赏