SpringMVC基于配置的异常处理器

 更新时间:2022年05月28日 11:05:46   作者:把苹果咬哭的测试笔记  
这篇文章主要为大家介绍了SpringMVC基于配置的异常处理器,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、基于配置的异常处理

SpringMVC 提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver。

HandlerExceptionResolver接口的实现类有:

DefaultHandlerExceptionResolver,这个是默认使用的处理器,之前遇到的一些异常,其实springMVC 都已经给我们处理过了。

SimpleMappingExceptionResolver,这个可以让我们自定义异常处理。当出现指定的异常,可以设置返回新的视图。

使用SimpleMappingExceptionResolver,在springMVC的配置文件中:

<!--配置异常处理-->
  <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
      <property name="exceptionMappings">
          <props>
              <prop key="java.lang.ArithmeticException">error</prop>
          </props>
      </property>
  </bean>

示例里使用的一个处理运算异常的类ArithmeticException,里面的值 error 表示异常后跳转的视图。

对应的,新建一个error.html页:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>error</title>
</head>
<body>
出现错误
</body>
</html>

接下来,造一个异常:

@RequestMapping("/testExceptionHandler")
  public String testExceptionHandler() {
      System.out.println(1/0);
      return "success";
  }

正常情况下这个处理器会跳转到 success 页,但是里面有个 1/0的异常,所以会按照配置跳转到 error 页。

重新部署,测试一下,访问http://localhost:8080/springmvc/testExceptionHandler:

成功跳转到 error 页。

储存异常信息

此外,还可以继续属性exceptionAttribute,设置一个key用来存放异常信息,默认存在当前的请求域中:

<!--配置异常处理-->
  <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
      <property name="exceptionMappings">
          <props>
              <prop key="java.lang.ArithmeticException">error</prop>
          </props>
      </property>
      <!--exceptionAttribute属性设置一个属性名,将出现的异常信息在请求域中进行共享-->
      <property name="exceptionAttribute" value="ex"></property>
  </bean>

那么在 error 页中就可以使用到ex来获取异常信息了。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>error</title>
</head>
<body>
出现错误
<p th:text="${ex}"></p>
</body>
</html>

重新部署,刷新下页面:

二、基于注解的异常处理

springmvc 同样也提供了一套注解,通过注解方式也可以实现上述的异常处理。

新建一个控制器 ExceptionController:

//@ControllerAdvice将当前类标识为异常处理的组件
@ControllerAdvice
public class ExceptionController {
    //@ExceptionHandler 用于设置所标识方法处理的异常
    @ExceptionHandler(value = {ArithmeticException.class, NullPointerException.class})
    public String testException(Exception ex, Model model){
        // ex表示当前请求处理中出现的异常对象,放到请求域中
        model.addAttribute("ex", ex);
        return "error";
    }
}

@ControllerAdvice将当前类标识为异常处理的组件。

ex表示当前请求处理中出现的异常对象,用Model放到请求域中。

现在注释掉配置文件里的处理器,重新部署下,刷新http://localhost:8080/springmvc/testExceptionHandler:

依然可以。

以上就是SpringMVC基于配置的异常处理器的详细内容,更多关于SpringMVC异常处理器的资料请关注脚本之家其它相关文章!

相关文章

  • Spring中@ControllerAdvice注解的用法解析

    Spring中@ControllerAdvice注解的用法解析

    这篇文章主要介绍了Spring中@ControllerAdvice注解的用法解析,顾名思义,@ControllerAdvice就是@Controller 的增强版,@ControllerAdvice主要用来处理全局数据,一般搭配@ExceptionHandler、@ModelAttribute以及@InitBinder使用,需要的朋友可以参考下
    2023-10-10
  • Triple协议支持Java异常回传设计实现详解

    Triple协议支持Java异常回传设计实现详解

    这篇文章主要为大家介绍了Triple协议支持Java异常回传设计实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • JAVA实现感知器算法

    JAVA实现感知器算法

    这篇文章主要为大家详细介绍了JAVA实现感知器算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Java三大特性之多态详解

    Java三大特性之多态详解

    多态是继封装、继承之后,面向对象的第三大特性。多态: 是指同一行为,具有多个不同表现形式。本文将来和大家详细说说Java中的多态,需要的可以了解一下
    2022-10-10
  • SpringBoot整合Web之AOP配置详解

    SpringBoot整合Web之AOP配置详解

    面向切面编程(aspect-oriented programming,AOP)主要实现的目的是针对业务处理过程中的切面进行提取,诸如日志、事务管理和安全这样的系统服务,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率
    2022-08-08
  • 关于java获取新浪天气示例

    关于java获取新浪天气示例

    这篇文章主要介绍了关于java获取新浪天气示例,新浪的接口可以直接通过城市名字查询天气所以这里使用新浪API,,需要的朋友可以参考下
    2023-04-04
  • 金三银四复工高频面试题java算法LeetCode396旋转函数

    金三银四复工高频面试题java算法LeetCode396旋转函数

    这篇文章主要为大家介绍了金三银四复工高频面试题之java算法题解LeetCode396旋转函数,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Mybatis Plus 代码生成器的实现

    Mybatis Plus 代码生成器的实现

    这篇文章主要介绍了Mybatis Plus 代码生成器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • JAVA SPI机制详解使用方法

    JAVA SPI机制详解使用方法

    Java定义了一套JDBC的接口,但并未提供具体实现类,而是在不同云厂商提供的数据库实现包。这篇文章给大家介绍Java的SPI机制,感兴趣的朋友一起看看吧
    2022-07-07
  • Eclipse中自动添加注释(两种)

    Eclipse中自动添加注释(两种)

    本文主要介绍了Eclipse中自动添加注释的两种方法。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论