SpringBoot2.2.6统一异常返回json,取消Whitelabel Error Page

SpringBoot+Vue前后端分离项目实战:从零搭建红色旅游系统 前后端分离架构是现代Web应用开发的主流范式,它将用户界面(前端)与业务逻辑和数据(后端)解耦,通过API进行通信。其核心原理在于前端专注于视图渲染和用户交互,后端则提供RESTful或GraphQL接口处理数据和业务。这种架构的价值在于提升了开发效率、便于团队协作,并能实现前后端的独立部署与扩展。在诸如管理系统、电商平台等应用场景中,SpringBoot与Vue的组合因其生态成熟、开发高效而备受青睐。本文以“红色旅游系统”为例,详细拆解了基于SpringBoot和Vue的前后端分离项目从环境搭建、核心CR 阅读详情

统一异常返回非常简单就是@RestControllerAdvice+@ExceptionHandler()这两个注解

一、新建一个自定义异常类,继承RuntimeException

public class CommonException extends RuntimeException {
    String message;

    @Override
    public String getMessage() {
        return super.getMessage();
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public CommonException(String message) {
        this.message = message;
    }

}

二、统一返回序列化为json的类Result,

注意:Result一定要加上@data注解,可能是我这个类有大小问题,此处可以参考https://blog.youkuaiyun.com/APPTITE/article/details/104600529/

@Data
public class Result<T> {
    private boolean success = false;

    private String message = null;

    private T bean = null;

    //构造器私有
    private Result() {
    }

    /**
     * 通用返回成功
     *
     * @param bean
     * @param <K>
     * @return
     */
    public static <K> Result<K> success(K bean) {
        Result<K> result = new Result<K>();
        result.success = true;
        result.message = null;
        result.bean = bean;
        return result;
    }

    /**
     * 通用返回失败
     *
     * @param bean
     * @param <K>
     * @return
     */
    public static <K> Result<K> failed(K bean) {
        Result<K> result = new Result<K>();
        result.success = true;
        result.message = null;
        result.bean = bean;
        return result;
    }

    /**
     * 返回失败的消息
     *
     * @param message
     * @param <K>
     * @return
     */
    public static <K> Result<K> failed(String message) {
        Result<K> result = new Result<K>();
        result.success = false;
        result.message = message;
        result.bean = null;
        return result;
    }

    /**
     * 生成一个成功的提示消息
     * @param message
     * @param <K>
     * @return
     */
    public static <K> Result<K> ok(String message) {
        Result<K> result = new Result<K>();
        result.success = true;
        result.message = message;
        result.bean = null;
        return result;
    }
    /**
     * 返回成功结果并带有message
     *
     * @param bean
     * @param message
     * @param <K>
     * @return
     */
    public static <K> Result<K> successAndMessage(K bean, String message) {
        Result<K> result = new Result<K>();
        result.success = true;
        result.message = message;
        result.bean = bean;
        return result;
    }
    /**
     * 返回失败结果并带有message
     *
     * @param bean
     * @param message
     * @param <K>
     * @return
     */
    public static <K> Result<K> failedAndMessage(K bean, String message) {
        Result<K> result = new Result<K>();
        result.success = false;
        result.message = message;
        result.bean = bean;
        return result;
    }
}

三、新建一个全局异常处理类GlobalExceptionHandler

@RestControllerAdvice是@ControllerAdvice和@@ResponseBody结合

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
    /**
     * 所有的异常处理
     * //Exception 这个是所有异常的父类
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    public Object exceptionHandler(HttpServletRequest request, Exception e) {
        log.error("", e);
        return Result.failed("系统运行发生异常,并且controller中未处理");
    }

    /**
     * 拦截自定异常
     * @param commonException
     * @return
     */
    @ExceptionHandler(CommonException.class)
    public Object commonException(HttpServletRequest request, CommonException commonException) {
        log.error("", commonException);
        return Result.failed("系统运行发生异常,并且controller中未处理");

    }


    /**
     * 拦截参数绑定错误
     * @param e
     * @return
     */
    @ExceptionHandler(BindException.class)
    @ResponseBody
    public Object handleBindException(BindException e) {
        log.error("参数绑定错误", e);
        return Result.failed("参数绑定错误");
    }

    @ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)
    @ResponseBody
    public Result handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException exception) {
        log.error("处理方法不支持", exception);
        return Result.failed("处理方法不支持");

    }
}

四、测试

    @RequestMapping(value = "/err")
    @ResponseBody
    public Result testErr(String name) {
        log.info(name+"222222222222222222222222222222222222");
        if (true) {
            throw new CommonException("扣减库存异常");
        }
        return Result.ok("rrr");
    }

输入http://127.0.0.1:8081/sbm/err

3小时实战:SpringBoot+Vue3后台管理系统从零搭建到部署 在软件开发领域,前后端分离架构已成为构建现代Web应用的主流范式。其核心原理在于将用户界面(前端)与业务逻辑和数据(后端)解耦,通过RESTful API进行通信。这种架构模式的技术价值在于提升了开发效率、实现了技术栈的灵活选型,并便于团队分工协作。它广泛应用于各类后台管理系统、数据看板和企业级应用开发中。本文聚焦于一个典型的应用场景——毕业设计与简历项目,手把手教你如何快速整合SpringBoot与Vue3两大热门技术栈,实现一个具备用户管理、权限控制等基础CRUD功能的后台管理系统。通过清晰的步骤讲解和 阅读详情

相关推荐

SpringBoot智慧泊车系统实战:从零构建车位预约与计费Web应用

在Web应用开发领域,SpringBoot作为Java生态中高效的开发框架,通过自动配置和约定优于配置的理念,极大地简化了企业级应用的搭建过程。其核心原理在于通过内嵌Servlet容器和Starter依赖,实现了项目的快速启动与部署,为开发者提供了构建稳健后端服务的强大基础。这一技术价值在于能够快速响应业务需求,构建可维护、可扩展的系统。在众多应用场景中,智慧城市解决方案对提升管理效率的需求日益增长,例如针对城市停车难问题的数字化管理。本文聚焦的智慧泊车系统,正是SpringBoot技术在此类场景下的典型工

weixin_34080571的博客 403

SpringBoot+Vue3全栈后台管理系统实战:3小时从零搭建RBAC与CRUD

前后端分离架构是现代Web应用开发的主流范式,其核心原理是将用户界面(前端)与业务逻辑和数据(后端)解耦,通过API接口进行通信。这种架构模式的技术价值在于提升了开发效率、便于团队协作,并增强了系统的可维护性和可扩展性。在工程实践中,SpringBoot作为Java后端的高效框架,与Vue3这一渐进式前端框架的组合,已成为构建企业级中后台应用的热门选择。其应用场景广泛覆盖后台管理系统、数据仪表盘和内部运营平台等。本文聚焦于如何快速实现一个具备用户管理、角色权限控制(RBAC)和增删改查(CRUD)功能的管理

weixin_34221773的博客 331

常用的集成TTL门电路

本篇主要分析了常用的逻辑门电路与非门,详细分析了电源原理。值得收藏。

ManagerUser的博客 5086

【SpringBoot】SpringBoot 纯后端项目如何自定义异常页面(Whitelabel Error Page)

一个纯后端项目,针对不同错误,可以跳转到不同的页面。

浩瀚宇宙的一粒尘埃 2683

Android应用加固脱壳实战:从爱加密原理到Frida内存Dump与修复

在移动应用安全领域,代码加固与动态加载是保护核心逻辑的关键技术。其原理在于通过修改应用启动流程,将原始DEX加密隐藏,并注入包含解密逻辑的壳DEX,实现运行时动态加载。这项技术的核心价值在于防止应用被逆向分析、二次打包或恶意篡改,广泛应用于金融、游戏等高安全要求场景。对于安全研究、漏洞挖掘或历史版本审计,掌握脱壳技能至关重要。本文聚焦于**爱加密**等主流加固方案,深入探讨如何利用**Frida**框架在内存中精准捕获解密后的DEX数据,并解决脱壳后常见的签名校验等运行问题,提供一套从原理到实践的完整攻防思

weixin_28716443的博客 488

通过ssh进行宇树g1机器人进行连接

原因:就是g1机器人输出接口损坏,无法连接外部显示器。前期准备:本文电脑是联想Y7000p(windows)2.进入页面后:3.出现是一个压缩包,解压后:4.安装时:要注意,需要在文件夹中找到这个文件目录,然后在此鼠标右键开启终端进行安装:接着按照提示next下去即可,可以自定义安装路径。

m0_72207463的博客 1282

springboot项目跳转Whitelabel Error Page 404 错误,解决!

文章目录springboot项目跳转Whitelabel Error Page 404 错误,解决!问题情况原因分析 springboot项目跳转Whitelabel Error Page 404 错误,解决! 问题情况 springboot项目启动没有问题,但是通过控制器controller返回跳转页面出现了Whitelabel Error Page错误 controller: 错误...

niuniu1994的博客 8173

低功耗和UPF介绍

参考[UPF]低功耗(Low Power Design)and UPF介紹

青春易逝,愿不负昭华,期待梦与远方 1万+

Springboot替换404 Whitelabel Error Page和统一异常处理

1.不加统一异常处理的话,也会跳转到错误页面去,但不能很好的拿到错误信息。1.原来Springboot默认的404错误页面。如:GlobalExceptionHandler。如CommonErrorController。如POST方法用GET方法访问。2.新建controller。2.添加统一异常处理类。

qq_38829845的博客 479

2025东三省D题深圳杯数学建模实战解析:基于多模型融合的法医STR混合样本智能识别系统

本文深入解析了2025年东三省数学建模竞赛D题,即深圳杯赛题,聚焦于法医STR混合样本的智能识别挑战。文章系统阐述了构建一个基于多模型融合的智能识别系统的完整流程,涵盖贡献者人数判定、DNA贡献比例估计、个体基因型推断以及STR谱图去噪四大核心步骤。通过融合高斯混合模型、随机森林、非负矩阵分解、小波变换与深度学习等多种技术,并强调特征工程的重要性,为破解法医DNA混合样本分析这一行业难题提供了清晰的数学建模与AI实战思路。

weixin_29050271的博客 390

华为昇腾(Ascend)开发考试原题目解析 (2024) (题库一)——HCIP-AI-Ascend Developer——第一部分

给出一段代码如下,以下哪个选项描述错误?...A.中的语句由 MindSpore 接管,有语法限制B. 算子在中定义,并用来建立网络C.__init__()中的语句由 Python 解析执行D. 网络定义必须继承基类nn.Cell正确答案: B__init__()用于定义算子和网络层。所有需要用到的层(如卷积层、全连接层等)都应该在这里进行实例化。这部分代码由Python解释器执行。用于构建前向计算图。它调用在__init__()中定义好的算子和层来描述数据的流向。

qq_38334677的博客 1051

SpringBoot接口服务处理Whitelabel Error Page

SpringBoot接口服务处理Whitelabel Error Page,主要是由于没有对无效请求进行处理。

loongshawn的博客 8万+

RV1126 ROS2环境交叉编译及部署(基于官方Docker)

我的所有基于`RV1126`的机器人项目都是在`Ubuntu22.04`下进行开发的,在`Ubuntu18.04 Docker`容器中实现`RV1126`的`SDK`编译,详细可参考我之前的博客[《Ubuntu20.04/22.04下Docker方案实现多平台SDK编译》第2章](https://blog.csdn.net/w1820020635/article/details/147342689),`RV1126`的`ROS1`部署没什么难度,可以参考我之前的博客,这里记录了`ROS2`交叉编译及问题解决

w1820020635的博客 1141

SpringBoot中干掉Whitelabel Error Page,返回自定义内容

SpringBoot中干掉Whitelabel Error Page,返回自定义内容 1. 引言 SpringBoot中对于错误请求的页面是长这样的, 然而我们在访问在一些网站时,如果请求错误,一般都会有友好美观的提示,比如知乎这个,这比起一堆错误信息要友好的多了。 我们可以根据项目业务来自定义错误请求(RequestMapping中没有映射到的请求)的处理,比如返回自定义错误页面或者Json字符串。 2. 分析 我们看看SpringBoot中对于错误请求是如何处理的。SpringBoot项目中搜索Wh

Myles'Blog 2473

UEFI 基础教程 (零) - 目录

UEFI 基础教程 (十八) — UEFI Build Process简单分析。UEFI 基础教程 (十五) — 获取UEFI MemoryMap。UEFI 基础教程 (六)   —  PROTOCOL 简单使用。UEFI 基础教程 (十)   —  FileIO 简单使用。UEFI 基础教程 (一)   —  搭建UEFI开发环境。UEFI 基础教程 (九)   —  EVENT 简单使用。UEFI 基础教程 (七)   —  HOB 简单使用。UEFI 基础教程 (八)   —  PCD 简单使用。..

技术联盟 1534

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SpringBoot非遗购物系统:从零搭建企业级Java毕设项目实战

SpringBoot作为Java企业级开发的主流框架,通过自动配置和约定大于配置的理念,极大地简化了传统Spring应用的搭建和部署流程。其核心原理在于Starter依赖和自动装配机制,能够快速集成Web、数据访问、安全等模块,显著提升开发效率。这一技术价值在于为开发者提供了一个标准化的、可快速上手的项目骨架,尤其适用于电商、管理系统等典型应用场景。在实际工程实践中,结合MyBatis-Plus进行数据持久化操作,可以进一步简化CRUD代码编写;而集成Shiro或Spring Security则能有效管理系

weixin_30600197的博客 454

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SpringBoot酒店客房管理系统实战:从零构建企业级Java Web项目

在Java Web开发领域,SpringBoot框架凭借其简化配置和快速开发能力,已成为构建企业级应用的主流选择。其核心原理基于Spring生态,通过自动配置和起步依赖,大幅降低了项目搭建的复杂度,为开发者提供了高效、稳定的技术基础。这一技术价值在于能够快速实现业务模块的整合与部署,尤其适用于需要快速迭代的管理系统开发。在众多应用场景中,酒店客房管理系统是一个经典案例,它涵盖了用户管理、订单处理和数据分析等核心业务,能有效串联SpringBoot、MyBatis-Plus和数据库设计等关键技术。通过整合My

weixin_34175509的博客 348

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

基于SpringBoot的校园智能报修系统:毕业设计实战指南

在软件开发领域,Web应用开发是核心技能之一,其关键在于如何将业务需求转化为稳定、可维护的系统。SpringBoot作为Java生态中主流的快速开发框架,通过约定优于配置的理念,极大地简化了企业级应用的搭建过程。其技术价值在于整合了Spring生态的众多模块,提供了自动配置、内嵌服务器等特性,使开发者能聚焦于业务逻辑实现。在实际应用场景中,诸如校园报修、OA办公、电商后台等管理系统,都是典型的Web应用,它们通常涉及用户管理、业务流程、数据持久化和权限控制等共性需求。本文以校园智能报修管理系统为例,深入探讨

weixin_30315905的博客 436

SpringBoot实战:校园体育场地预约系统开发全流程解析

在Web应用开发领域,SpringBoot作为Java生态中主流的快速开发框架,以其自动配置、内嵌服务器和简化部署的特性,极大地提升了后端服务的开发效率。其核心原理在于通过约定大于配置的方式,整合Spring生态,让开发者能专注于业务逻辑的实现。这一技术价值在于能够快速构建稳定、可扩展的RESTful API服务层,广泛应用于各类管理系统、电商平台及微服务架构中。特别是在资源管理与在线预约这类典型应用场景里,结合MyBatis-Plus等持久层框架,可以高效完成从数据库设计到业务逻辑编排的全过程。本文聚焦于

weixin_34115824的博客 398

SpringBoot校园二手交易平台:Java全栈课设实战指南

在Java Web开发领域,SpringBoot作为构建企业级应用的主流框架,以其简化配置和快速开发的特性,极大地提升了后端服务的开发效率。其核心原理在于通过自动配置和起步依赖,将开发者从繁琐的XML配置中解放出来,实现了约定大于配置的开发范式。这一技术价值在于能够帮助开发者,尤其是学生和初学者,快速搭建起结构清晰、易于维护的Web应用原型。结合MyBatis-Plus进行高效数据操作,以及Thymeleaf实现服务端渲染,构成了一个典型且实用的MVC技术栈。这种技术组合非常适合应用于电商、管理等具有清晰业

weixin_30268071的博客 392

解决Whitelabel Error Page最简单的方式

我们将已经有的static目录改名为code(代码的意思),然后最终如下图所示。在我使用springboot的时候,将程序运行但是。地址之后,不会出现我们所想出现的页面,反而出现了。此文件下都是静态资源文件,最主要的一个特点,可。下面这个图是最开始我分的目录,注意看。, 比如JS, CSS样式, 图片等, 是。没有办法利用localhost:8080。,我们下一步就会在这个地方进行改变。便可以出现我们对应的页面。进行数据绑定的页面....

weixin_51351637的博客 3万+

根据Spring Boot官方文档处理在项目中出现的Whitelabel Error Page(白色错误页面)

在Spring Boot项目中,可能大家都会碰到如下页面: 当我们系统出错或者访问地址不正确时就会这个页面,这个页面是Spring Boot自带的白色错误页面 当然这个不是我们想要的,如果我们把这个展示给用户看,用户也会一脸懵,看不懂,那么我们既要页面美观,不是一堆看不懂的英文,也要让用户明确的知道是什么问题 接下来我们就去Spring Boot 官方文档去看看如何解决。 进入到Spring B...

Wanik666 2803

springboot统一异常处理(返回json)并支持所有异常格式化返回

当用spring boot开发后端时,我们常采用前后端分离的开发策略,这时候要求前端与后端需要进行数据交互,传统的一般采用json数据交互。这时候我们要对spring boot的默认异常处理方式进行修改了,要统一返回数据格式,优雅的数据交互,优雅的开发应用。首先我们要了解一般springboot的错误发生在什么地方。一般发生在、、、、还有就是了。下面我分享一下我的处理方式:++的处理方式。...

钟健的博客 1万+

Whitelabel Error Page

controller层的类没有写在创建boot项目时默认给的包里面,而是自己创建了一个controller包,且controller相关的类写在了这个包里面,就会出现找不到资源的问题。直接把controler层的类全写到默认包下面(显得很臃肿)

2301_80484340的博客 2194

记录 SpringBoot 中 Whitelabel Error Page 错误(500)

问题描述:浏览器/Postman返回 500 错误,User 对象没正确转化为 JSON数据 可能原因:缺少 spring-boot-starter-json 的依赖,或者依赖没正确加载,缓存未清理 过程:进行了蛮多尝试,大半天都没解决,后面还跳出过404、406 ,所以最后解决成功是因为单一步骤还是多个步骤我也不好说()但尽可能列举了所做的尝试 目的:让接口正常访问用户对象

m0_73740696的博客 759

spring-boot(四)异常配置,Whitelabel Error Page处理方式

前言我用的spring boot版本号是2.0.1 1、srping boot几种异常类型 rest接口运行时抛出的异常 访问视图时抛出的异常 a、访问一个存在的url返回一个不存的视图异常 b、访问一个不存的url异常 1.1spring boot默认处理异常的方式 spring boot访问视图接口默认处理异常的是用类BasicErrorController实...

lh87270202的博客 4万+
上一篇: 我的idea注释配置
下一篇: Springboot整合SM2加密的笔记
你愁啥啊
博客等级 码龄11年 8粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值