SpringMVC之全局异常管理

 

06559bd1b54f4ab6b47a160ada9dddda.jpg在开发过程中一个项目可以要抛出很多很多的异常,这对于用户来说非常地不方便,而且非常地不安全,特别容易导致用户信息地泄露。在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文件来,将后端的异常问题打印在前端显示器上

<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>出错了</h1>
出错原因:${error}
</body>
</html>

配置SpringMVC的配置文件,配置文件上传的大小不能超过1KB

<?xml version="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.support.StandardServletMultipartResolver" id="multipartResolver"></bean>-->
    <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver" >
    <!--   上传的单个文件大小,设置单文件大小不能超过1KB-->
        <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>

关于框架中的控制器,web.xml 和pomxml中的配置与上面哪个链接中配置相同,如果不会可以去了解以下

项目展示:

95db0f4130964168ac0c35ea5568bc86.png

选中一个大于1KB的文件,点击提交 

85d7d1b68a634c9087bdb167300704de.png

 显示出错的原因,是因为文件大于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) 为定义显示异常的参数因素,可以修改其中的异常类型,但是有一点注意,我们修改参数类型,那么只有当项目中出现与定义的参数类型一致的异常才会显示出来,当出现其他的异常则不会被这个异常管理类所侦测到。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想睡醒的梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值