在开发过程中一个项目可以要抛出很多很多的异常,这对于用户来说非常地不方便,而且非常地不安全,特别容易导致用户信息地泄露。在SpringMVC中有一种全局异常管理方法,这种方法收集项目中存在所有地异常,以保证项目正常地运行并且不会出现差错。
注意:本次博客使用的案例还是通过文件上传为基础案例,来演示全局异常管理。
文件上传讲解如果有疑惑的地方可以去了解
- package exception;
-
-
- import org.springframework.web.bind.annotation.ControllerAdvice;
- import org.springframework.web.bind.annotation.ExceptionHandler;
- import org.springframework.web.servlet.ModelAndView;
-
- @ControllerAdvice //增强的controller类,多用于全局数据地处理
- public class CT_Exception {
- @ExceptionHandler(Exception.class) //异常处理注解:参数为各种异常类,Exception.class是异常的父类,是所有异常的集合,如果参数定义为它,它可以接收项目中的所有的异常,无论哪种异常都可以进行管理
- public ModelAndView exception(Exception e){
- ModelAndView modelAndView = new ModelAndView("error");
- modelAndView.addObject("error",e.getMessage());
- return modelAndView;
- }
-
- }
- <html>
- <head>
- <title>Titletitle>
- head>
- <body>
- <h1>出错了h1>
- 出错原因:${error}
- body>
- html>
- "1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
-
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
-
-
- <context:component-scan base-package="fileupload_demo1">context:component-scan>
- <mvc:annotation-driven/>
- <mvc:resources mapping="/**" location="/">mvc:resources>
- <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver" >
-
- <property name="maxUploadSizePerFile" value="1024"/>
-
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="modelAndView">
- <property name="prefix" value="/jsp/">property>
- <property name="suffix" value=".jsp">property>
- bean>
-
- beans>
选中一个大于1KB的文件,点击提交
- package exception;
-
-
- import org.springframework.web.bind.annotation.ControllerAdvice;
- import org.springframework.web.bind.annotation.ExceptionHandler;
- import org.springframework.web.servlet.ModelAndView;
-
- @ControllerAdvice //增强的controller类,多用于全局数据地处理
- public class CT_Exception {
- @ExceptionHandler(Exception.class) //异常处理注解:参数为各种异常类,Exception.class是异常的父类,是所有异常的集合,如果参数定义为它,它可以接收项目中的所有的异常,无论哪种异常都可以进行管理
- public ModelAndView exception(Exception e){
- ModelAndView modelAndView = new ModelAndView("error");
- modelAndView.addObject("error",e.getMessage());
- return modelAndView;
- }
-
- }
其中 @ExceptionHandler(Exception.class) 为定义显示异常的参数因素,可以修改其中的异常类型,但是有一点注意,我们修改参数类型,那么只有当项目中出现与定义的参数类型一致的异常才会显示出来,当出现其他的异常则不会被这个异常管理类所侦测到。