Spring MVC项目中的异常处理怎么配置
这篇文章主要介绍“Spring MVC项目中的异常处理怎么配置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring MVC项目中的异常处理怎么配置”文章能帮助大家解决问题。
1. 基于配置的简单异常处理
在SpringMVC中拥有一套非常强大的异常处理机制,SpringMVC通过 HandlerExceptionResolver处理程序的异常,包括请求映射,数据绑定以及目标方法的执行时发生的异常。
SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:
HandlerExceptionResolver,该接口的实现类有:DefaultHandlerExceptionResolver和
SimpleMappingExceptionResolver,下面就来看看如何使用简单异常处理器来处理异常。
使用 Spring MVC 提供的简单异常处理器 SimpleMappingExceptionResolver
Spring MVC配置文件
<!--配置异常处理器--><bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!--ArithmeticException算术运算异常:是出现异常的运算条件时,抛出此异常--> <prop key="java.lang.ArithmeticException">error</prop> </props> </property> <property name="exceptionAttribute" value="e"/></bean>
注意:
properties的键表示处理器方法执行过程中出现的异常
properties的值表示若出现指定异常时,设置一个新的视图名称,跳转到指定页面
exceptionAttribute属性设置一个属性名,将出现的异常信息在请求域中进行共享
控制器方法
@RequestMapping("/testException")public String testException(){ System.out.println(1/0); return "success";}
在该控制器方法中抛出一个算术运算异常,运行
2. 基于注解的全局异常处理
@ControllerAdvice:将当前类标识为异常处理的组件,是Spring提供的新注解,它是对Controller的增强,可对 controller中被 @RequestMapping注解的方法加一些逻辑处理;
@ExceptionHandler:用于设置所标识的方法处理的异常,@ExceptionHandler加在ControllerAdvice中,处理全局异常
ExceptionController
@ControllerAdvicepublic class ExceptionController { @ExceptionHandler(value = {ArithmeticException.class,NullPointerException.class}) public String exception(Exception e, Model model){ model.addAttribute("e",e); return "error"; }}
@ExceptionHandler的value值可以是数组,所以可以添加许多可能出现的异常;在该方法中
当出现算数运算异常或空指针异常就会跳转到我们自己设置的异常页面,并且展示异常信息。
error.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %><html><head> <title>错误页面</title></head><body><h2>error</h2> ${e}</body></html>
异常页面
关于“Spring MVC项目中的异常处理怎么配置”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341