• SpringMVC异常处理和自定义拦截器


    前言:最近在做公司项目的过程中,发现学过的SpringMVC的知识忘记了,于是看了之前看的视频的笔记,并结合自己的理解写下了这篇博客,希望能加深自己的印象以及帮助的诸位小伙伴儿们🤞🤞
    如果有什么需要改进的地方还请大佬斧正😁
    小威在此先感谢诸佬了👏👏
    在这里插入图片描述

    🏠个人主页:小威要向诸佬学习呀
    🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
    目前状况🎉:目前大二,在一家满意的公司实习👏👏

    🎁如果大佬在准备面试,找工作,刷算法,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
    💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

    牛客部分使用反馈,个人感觉还不错,帮我找到了心仪的公司,希望各位伙伴儿们通过它也能提高不少🥂🥂🥂

    以下正文开始

    统一异常处理

    在这里插入图片描述

    在我们的应用系统运行的过程中,可能由于运行环境、用户操作、资源不足等各方面的原因导致系统出现异常(HTTP状态异常、Exception);如果系统出现了异常,这些异常将会通过浏览器呈现给用户,而这种异常的显示是没有必要,因此我们可以在服务器进行特定的处理——当系统出现异常之后,呈现给用户一个统一的、可读的的异常提示页面。

    在这里插入图片描述

    HTTP异常状态统一处理

    HTTP Status 404

    • 创建一个用于进行异常提示的页面:404.jsp

    • 在web.xml中进行配置:

      <error-page>
          <error-code>404error-code>
          <location>/404.jsplocation>
      error-page>
      
      • 1
      • 2
      • 3
      • 4

    Java代码异常的统一处理

    基于Servlet-api的处理

    • 创建异常提示页面:err.jsp

    • 在web.xml中进行配置

      <error-page>
          <exception-type>java.lang.NumberFormatExceptionexception-type>
          <location>/err.jsplocation>
      error-page>
      
      • 1
      • 2
      • 3
      • 4

    SpringMVC处理

    • 使用异常处理类进行统一处理

      @ControllerAdvice
      public class MyExceptionHandler {
      
          @ExceptionHandler(NullPointerException.class)
          public String nullHandler(){
              return "/err1.jsp";
          }
      
          @ExceptionHandler(NumberFormatException.class)
          public String formatHandler(){
              return "/err2.jsp";
          }
      
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14

    拦截器

    拦截器介绍

    SpringMVC提供的拦截器就类似于Servlet-api中的过滤器,可以对控制器的请求进行拦截实现相关的预处理和后处理。

    • 过滤器
      • 是Servlet规范的一部分,所有的web项目都可以使用
      • 过滤器在web.xml配置(可以使用注解),能够拦截所有web请求
    • 拦截器
      • 是SpringMVC框架的实现,只有在SpringMVC框架中才能使用
      • 拦截器在SpringMVC配置文件进行配置,不会拦截SpringMVC放行的资源(jsp\html\css…)

    自定义拦截器

    创建拦截器

    public class MyInterceptor1 implements HandlerInterceptor {
    
        //预处理方法
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("--------------预处理");
            Enumeration<String> keys = request.getParameterNames();
            while (keys.hasMoreElements()){
                String key = keys.nextElement();
                if("bookId".equals(key)){
                    return true;
                }
            }
            response.setStatus(400);
            return false;
        }
    
        //后处理方法
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            modelAndView.addObject("tips","这是通过拦截器的后处理添加的数据");
            System.out.println("--------------后处理");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    配置拦截器

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/book/query"/>
            <mvc:mapping path="/book/add"/>
            <mvc:mapping path="/student/**"/>
            <mvc:exclude-mapping path="/student/add"/>
            <bean class="com.qfedu.utils.MyInterceptor1"/>
        mvc:interceptor>
    mvc:interceptors>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    文章到这里就结束了,以后还会记录一些其他的知识,喜欢的大佬可以多多支持哦😉😉。
    如果有什么疑问的地方请指出,诸佬们一起讨论🍻🍻
    在这里插入图片描述

    最后再次给大家安利一波牛客,牛客真的很不错的软件,点击刷题神器
    注册牛客,快来和博主一起刷题吧嘿嘿嘿👏
    同时祝伙伴儿找到理想的工作及猛猛地提升算法能力哦😏

    再次感谢各位小伙伴儿们的支持🤞
    在这里插入图片描述

  • 相关阅读:
    【毕业设计】基于stm32的语音识别 - 单片机 嵌入式 物联网 语音识别
    详细安装node.js管理工具nvm,以及对应版本的npm(npm6.x)过程中遇到的问题
    Java学习路线图(完整详细2021版)
    【超详细】Apache Durid从入门到安装详细教程
    PyTorch源码学习系列 - 2. Tensor
    智慧城市中的数字孪生:数字孪生技术助力智慧城市提高公共服务水平
    一种基于形态学的权重自适应周期性噪声去除方法-含Matlab代码
    VUE----通过nvm管理node版本
    关于面试被面试官暴怼:“几年研究生白读” 的前因后果
    卡塔尔世界杯壁纸已上线,下载的壁纸清晰度不够?教你修复清晰
  • 原文地址:https://blog.csdn.net/qq_53847859/article/details/126350278