• SpringMVC之全局异常管理


     

    06559bd1b54f4ab6b47a160ada9dddda.jpg在开发过程中一个项目可以要抛出很多很多的异常,这对于用户来说非常地不方便,而且非常地不安全,特别容易导致用户信息地泄露。在SpringMVC中有一种全局异常管理方法,这种方法收集项目中存在所有地异常,以保证项目正常地运行并且不会出现差错。

     

    注意:本次博客使用的案例还是通过文件上传为基础案例,来演示全局异常管理。

    文件上传讲解如果有疑惑的地方可以去了解

    定义一个类:实现项目中全局异常管理

    1. package exception;
    2. import org.springframework.web.bind.annotation.ControllerAdvice;
    3. import org.springframework.web.bind.annotation.ExceptionHandler;
    4. import org.springframework.web.servlet.ModelAndView;
    5. @ControllerAdvice //增强的controller类,多用于全局数据地处理
    6. public class CT_Exception {
    7. @ExceptionHandler(Exception.class) //异常处理注解:参数为各种异常类,Exception.class是异常的父类,是所有异常的集合,如果参数定义为它,它可以接收项目中的所有的异常,无论哪种异常都可以进行管理
    8. public ModelAndView exception(Exception e){
    9. ModelAndView modelAndView = new ModelAndView("error");
    10. modelAndView.addObject("error",e.getMessage());
    11. return modelAndView;
    12. }
    13. }

    创建一个Html文件来,将后端的异常问题打印在前端显示器上

    1. <html>
    2. <head>
    3. <title>Titletitle>
    4. head>
    5. <body>
    6. <h1>出错了h1>
    7. 出错原因:${error}
    8. body>
    9. html>

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

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xmlns:mvc="http://www.springframework.org/schema/mvc"
    6. 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">
    7. <context:component-scan base-package="fileupload_demo1">context:component-scan>
    8. <mvc:annotation-driven/>
    9. <mvc:resources mapping="/**" location="/">mvc:resources>
    10. <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver" >
    11. <property name="maxUploadSizePerFile" value="1024"/>
    12. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="modelAndView">
    13. <property name="prefix" value="/jsp/">property>
    14. <property name="suffix" value=".jsp">property>
    15. bean>
    16. beans>

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

    项目展示:

    95db0f4130964168ac0c35ea5568bc86.png

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

    85d7d1b68a634c9087bdb167300704de.png

     显示出错的原因,是因为文件大于1KB导致报错,这就是全局异常管理

     

    注意:我们不光把异常管理设置成全局异常管理,我们还可以设置单一的异常管理,只需要将前边创建的异常管理的类中的参数修改以下即可

    1. package exception;
    2. import org.springframework.web.bind.annotation.ControllerAdvice;
    3. import org.springframework.web.bind.annotation.ExceptionHandler;
    4. import org.springframework.web.servlet.ModelAndView;
    5. @ControllerAdvice //增强的controller类,多用于全局数据地处理
    6. public class CT_Exception {
    7. @ExceptionHandler(Exception.class) //异常处理注解:参数为各种异常类,Exception.class是异常的父类,是所有异常的集合,如果参数定义为它,它可以接收项目中的所有的异常,无论哪种异常都可以进行管理
    8. public ModelAndView exception(Exception e){
    9. ModelAndView modelAndView = new ModelAndView("error");
    10. modelAndView.addObject("error",e.getMessage());
    11. return modelAndView;
    12. }
    13. }

    其中 @ExceptionHandler(Exception.class) 为定义显示异常的参数因素,可以修改其中的异常类型,但是有一点注意,我们修改参数类型,那么只有当项目中出现与定义的参数类型一致的异常才会显示出来,当出现其他的异常则不会被这个异常管理类所侦测到。

     

  • 相关阅读:
    六、流量监管、流量整形
    第25节-PhotoShop基础课程-文本工具组
    uniapp 实现滑动元素删除效果
    腾讯mini项目-【指标监控服务重构】2023-08-26
    Ubuntu22.04源码安装ROS-noetic(ROS1非ROS2),编译运行VINS-MONO
    (数字图像处理MATLAB+Python)第十二章图像编码-第三、四节:有损编码和JPEG
    高校毕业求职难?“百日千万”网络招聘活动解决你的难题
    LeetCode75——Day14
    实战之AngularJS 的Scope和Service的深入应用心得
    上位机程序,上位机界面开发,ATECLOUD中国人自己的LabVIEW
  • 原文地址:https://blog.csdn.net/m0_52479012/article/details/127870343