Spring MVC - 异常处理器

四十四章 Spring之假如让你来写MVC——异常处理器篇 对于Spring一直都是既熟悉又陌生,说对它熟悉吧,平时用用没啥问题,但面试的时候被问的一脸懵逼,就很尴尬,都不好意思在简历上写着熟悉Spring了所以决定花点时间研究研究Spring的源码。《Spring源码深度解析(第2版)》、《Spring揭秘》、《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》书接上回,在上篇第四十三章Spring之假如让你来写MVC——上传文件篇中,A君已经完成了文件上传部分的功能了。接下来看看A君会有什么骚操作吧。 阅读详情

1. 什么是异常处理器?

SpringMVC 在处理请求的过程中出现异常情况,可以采用 异常处理器 进行应对。简单来说,处理器在处理请求执行过程中出现异常,跳转到对应的视图,在视图上展示友好的信息。

SpringMVC为异常处理提供了一个异常处理接口:HandlerExceptionResolver

public interface HandlerExceptionResolver {
    @Nullable
    //返回一个ModelAndView 对象,表示异常处理跳转那个界面
    ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex);
}

HandlerExceptionResolver 接口的实现目录,其中 DefaultHandlerExceptionResolver 和 SimpleMappingExceptionResolver 是最常用。

2. 默认的异常处理器

DefaultHandlerExceptionResolver 是SpringMVC 默认的异常处理器。核心方法如下:

    protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) {
        //源代码中通过 判断业务抛出的异常信息,调用相对应的方法将状态码和错误信息封装到一个ModelAndView对象中,并将ModelAndView对象返回。
    }

3. 自定义异常处理器

SimpleMappingExceptionResolver 是SpringMVC 提供给开发者自定义异常处理的处理器。其核心方法:

    @Nullable
    protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) {
        //获取视图名称
        String viewName = this.determineViewName(ex, request);
        if (viewName != null) {
            //获取状态码
            Integer statusCode = this.determineStatusCode(request, viewName);
            if (statusCode != null) {
                //将状态码,保存在 response中
                this.applyStatusCodeIfPossible(request, response, statusCode);
            }
            //创建一个ModelAndView对象,通过ModelAndView方式将 异常信息和自定义的页面 保存在 request域中,并 return。
            return this.getModelAndView(viewName, ex, request);
        } else {
            return null;
        }
    }

3.1 配置文件方式

通过在 springmvc.xml 文件中配置自定义异常处理,指定异常展示页面。配置信息如下:

    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <!--这里用来指定异常出现之后跳转的视图,可以配置多个键值对-->
            <props>
                <!--key是异常,要提供具体的异常类型,包括包名-->
                <!--这种方式标志出现 IllegalAccessException,就会跳转ex2视图-->
                <prop key="java.lang.IllegalAccessException">ex2</prop>
                <!--这种方式代表只要出现异常,都会跳转下面指定的页面-->
                <prop key="java.lang.Exception">页面名称1</prop>
            </props>
        </property>
        <!--将异常信息存储到 request域中,value属性用来指定存储时的key。 底层: request.setAttribute("ex", 异常对象);-->
        <property name="exceptionAttribute" value="ex"/>
    </bean>

3.2 注解方式

通过注解方式直接自定义一个异常处理器,通过域数据共享的方式来将信息响应到指定页面中。代码如下:

@ControllerAdvice
public class ExceptionController {

    @ExceptionHandler
    public String ex1(Exception e, Model model){ //这里参数 model map modelMap都可以
        //异常信息自定义处理,可以在此处,也可以另写方法进行处理
        //将数据封装到 request域中
        model.addAttribute("ex",e);
        return "页面名称";
    }

    @ExceptionHandler
    public ModelAndView ex2(Exception e){
        String viewName = "页面名称";
        ModelAndView mv = new ModelAndView(viewName);
        mv.addObject("ex", e);
        return mv;
    }
}
后端 Spring MVC 框架:异常处理器的定制化 在 Spring MVC 框架的 Web 开发中,异常处理是至关重要的一环。当应用程序在运行过程中出现异常时,如果没有合理的处理机制,会给用户带来不好的体验,同时也不利于开发者进行问题排查和系统维护。本文章的目的就是深入探讨如何在 Spring MVC 框架中进行异常处理器的定制化,以实现对各种异常的有效捕获、处理和反馈。范围涵盖了从基本的异常处理概念到高级的定制化策略,包括核心算法原理、数学模型、项目实战以及实际应用场景等方面。 阅读详情

相关推荐

ubuntu20.04安装nvidia-docker(解决有 Release 文件。 N: 无法安全地用该源进行更新,所以默认禁用该源错误)

然后想都不要想,nvidia+linux安装的东西,那肯定是不能安装成功的,恶毒的nvidia。按照nvidia官网给出的安装nvidia-docker流程来。在sudo apt-get update出现报错。然后再次update,发现还是会有一些警告类似于。,直接点击网页手动下载,发现下载成功!,注意会有安装先后顺序,安装给的提示就行。最后输入命令发现安装成功。然后替换掉里面的内容。直接不管,直接上命令。

weixin_48144140的博客 1238

Spring MVC之异常处理器一

SpringMVC学习之异常处理器,Spring MVC学习必备,异常处理,入门级

qq_57423665的博客 776

网络流量监测技术

NetFlow是Cisco公司提出的网络数据包交换技术,该技术首先被用于网络设备对数据交换进行加速,并可同步实现对高速转发的IP数据流(Flow)进行测量和统计。  随着宽带互联网在中国 的迅速发展,全国各大电信运营商的网络规模都在不断扩张,网络结构日渐复杂,网络业务日趋丰富,网络流量高速增长。电信运营商需要通过可靠、有效的网络业 务流量监测系统对其网络以及网络所承载的各类业务进行及时、准

红杉树(ecitnet)的博客 5541

SSM整合-异常处理器及项目异常处理方案

SSM整合-异常处理器及项目异常处理方案

m0_61961937的博客 1757

【可信数据空间-连接器技术架构设计方案】

一句话概括连接器是可信数据空间的“数据保镖”和“外交官”。连接器就是一个部署在你本地的软件代理,它代表你安全地对外提供数据服务,确保在共享数据价值的同时,牢牢守住数据的所有权和控制权。它是实现“数据可用不可见”这一理想的关键技术部件。一个生动的比喻:银行的金库和接待员想象一下,你的数据就是藏在银行金库里的黄金和钞票。金库(你的内部数据库): 绝对安全,外人绝对不能进。接待员(连接器): 坐在银行大厅里,负责与客户打交道。客户向接待员提出请求:“我想取1000元。

u014716614的博客 2274

从Palantir到AI时代:Forward Deployed Engineer模式的深度解析

《从Palantir到AI时代:FDE模式的创新与挑战》摘要:Palantir开创的前置部署工程师(FDE)模式正在成为AI创业公司的标配。该模式通过现场工程师深入了解客户需求,填补产品与实际应用间的鸿沟,颠覆了传统SaaS规模化路径。核心优势在于将定制化服务转化为产品发现机制,特别适合高度异质化的AI市场。成功关键在于平衡定制与标准化,通过合同价值增长、产品杠杆效应等独特指标衡量成效。FDE人才需要兼具领域洞察力与快速原型能力。这一模式表明,在AI等新兴领域,深入客户现场可能比单纯追求技术突破更能创造商业

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 4551

Spring Boot 如何自定义异常处理器

要实现自定义异常处理器,您需要执行以下步骤:1.创建一个自定义异常类,例如。} }在上面的代码中,我们创建了一个自定义异常类,继承自类。2.创建一个自定义异常处理器,例如。} }在上面的代码中,我们创建了一个自定义异常处理器,使用注解标记。这个注解表示这个类将用于全局异常处理。我们使用注解来标记处理异常的方法。在这个方法中,我们将错误信息、时间戳和请求描述封装成对象,并将其作为响应返回给客户端。3.在控制器方法中抛出自定义异常。} }在上面的代码中,我们在/test。

it_xushixiong的博客 1977

图像处理:张量分解在图像处理领域的应用

随着计算机视觉和图像处理技术的快速发展,图像数据呈现出高维、多模态、海量等特点。传统的矩阵分解方法已经无法有效处理这些复杂的图像数据。张量分解作为一种高阶矩阵分解方法,可以很好地捕捉图像数据的高维结构信息,在图像处理领域展现出巨大的应用前景。本节介绍几种常用的张量分解算法,包括高阶SVD(HOSVD)、Tucker-ALS、CP-ALS等。这些算法的核心思想是通过迭代优化的方式,交替更新张量分解的因子矩阵,直到收敛为止。综上所述,本文系统地介绍了张量分解技术在图像处理领域的应用。

AI天才研究院 7106

springMVC--异常处理

Spring MVC 通过HandlerExceptionResolver 处理程序的异常,包括Handler 映射、数据绑定以及目标方法执行时发生的异常。主要处理Handler 中用@ExceptionHandler 注解定义的方法。ExceptionHandlerMethodResolver 内部若找不到@ExceptionHandler 注解的话, 会找@ControllerAdvice 类的@ExceptionHandler 注解方法, 这样就相当于一个全局异常处理器。

m0_73557631的博客 1119

【100%通过率】华为OD机试真题 Python 实现【最多组合直角三角形个数】【2023 Q1 | 100分】

有N条线段,长度分别为a[1]-a[n]。 现要求你计算这N条线段最多可以组合成几个直角三角形。 每条线段只能使用一次,每个三角形包含三条线段。

MISAYAONE的博客 1万+

ardupilot开发 --- mavlink签名加密 篇

ardupilot开发 --- mavlink签名加密

记录老板的每次pua,分享领导每天的毒鸡汤... 1241

实现自定义的异常处理机制:自定义异常类和异常处理器

上述示例中,`CustomExceptionHandler`实现了`Thread.UncaughtExceptionHandler`接口,该接口定义了一个`uncaughtException`方法,用于处理未捕获的异常。您可以在`uncaughtException`方法中编写自定义的异常处理逻辑,根据需要进行异常信息的打印、日志记录或其他操作。然后在`try-catch`块中抛出和捕获自定义异常。上述示例中,`CustomException`类继承自`Exception`类,表示一个自定义的异常。

m0_75198698的博客 421

华为面试手撕真题【字符串压缩】

华为面试手撕真题【字符串压缩】

MISAYAONE的博客 1万+

spring MVC 异常处理器

1、简述&环境搭建 异常处理器: 实现了HandlerExceptionResolver接口 作用:用来处理springMVC中 控制器出现的异常 一般一个项目有一个异常处理器 Demo1Resolver @Component public class Demo1Resolver implements HandlerExceptionResolver{ /* * 处理异常 ...

luoxi_xi的博客 214

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

spring mvc配置异常处理器

异常处理流程: 思想:异常 捕获异常 跳转到正常界面告诉用户发生异常 1、自定义异常: package exception; //自定义异常类 public class SYSException extends Exception{ private String message; public String getMessage() {//get能访问 return message; } public void setMessage(String message) {//set能更改

weixin_45247356的博客 260

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

使用Spring MVC的统一异常处理器

转自:https://www.jianshu.com/p/20dd0d28c758 使用Spring MVC的统一异常处理器 Spring MVC定义了异常的统一处理机制,其工作原理是: Spring MVC统一异常处理流程.png 不管是应用程序的哪里出现异常,都向上层抛出异常,最后异常被提交到Spring MVC的Dispatcher Servlet中,Dispatcher Ser...

weixin_42692506的博客 146

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring_MVC异常处理器(七)

Spring_MVC异常处理器

hello world 2277

spring mvc创建全局异常处理器

大奶爸爸的博客 213

Spring MVC的异常处理器

异常处理器 异常处理思路 Java 中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发生。 系统的 Dao、Service. Controller出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理,如下图: 异常处理的两种方式 使用 Spring MVC 提供的简单异常处理器 SimpleMappingExceptionResolver

qq_37391214的博客 225

Spring MVC学习:配置异常处理器

基于XML文件方式配置 在springmvc.xml文件中配置 <!-- 配置异常处理器--> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop ke

眼泪划过的星空 328

Spring MVC异常处理【单个控制异常处理器、全局异常处理器、自定义异常处理器】

Spring MVC异常处理

qq_53317005的博客 3万+

Spring MVC 中的异常处理器

Spring MVC 在处理器方法执行过程中出现了异常,可以采用异常处理器进行应对。一句话概括异常处理器作用:处理器方法执行过程中出现了异常,跳转都对应的视图,在视图上展示友好信息。Spring MVC 为异常处理提供了一个接口:HandlerExceptionResolver核心方法是:resolveException。该方法用来编写具体的异常处理方案。返回值ModelAndView,表示异常处理完之后跳转到哪个视图。

weixin_61635597的博客 1747

Spring MVC异常处理器

和。SpringMVC提供了自定义的异常处理器

钟健的博客 7912

Spring MVC 异常处理器

如果不加以异常处理,错误信息肯定会抛在浏览器页面上,这样很不友好,所以必须进行异常处理。

jyx_boy的博客 597
上一篇: Spring MVC - 视图
头疼-
博客等级 码龄5年 462粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值