我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Spring MVC的拦截器与异常处理机制是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Spring MVC的拦截器与异常处理机制是什么

这篇文章主要介绍了Spring MVC的拦截器与异常处理机制是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring MVC的拦截器与异常处理机制是什么文章都会有所收获,下面我们一起来看看吧。

    1. SpringMVC拦截器

    1.1 拦截器(interceptor)的作用

    Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理后处理

    将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方

    法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。

    1.2 拦截器和过滤器的区别

    区别过滤器(Filter)拦截器(Interceptor)
    使用范围是servlet规范中的一部分,任何Java Web工程都可以使用是Spring MVC框架自己的,只有使用了Spring MVC框架的工程才可以使用
    拦截范围在url-pattern 中配置了/*后,可以对所有要访问的资源拦截在<mvc:mapping path=" “/>中配置了/**之后,也可以对所有资源进行拦截,但是可以通过<mvc:exclude-mapping path=” "/>标签 排除不需要拦截的资源

    1.3 拦截器的快速入门

    自定义拦截器很简单,只有如下三步:

    创建拦截器类 实现HandlerInterceptor接口

    配置拦截器

    测试拦截器的拦截效果

    创建拦截器类 实现HandlerInterceptor接口

    public class MyHandlerInterceptor implements HandlerInterceptor{    public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler){        System.out.println("preHandle running...");        return true;    }        public boolean postHandler(HttpServletRequest request,HttpServletResponse response,Object handler){        System.out.println("postHandler running....");    }    public void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler){        System.out.println("aferCompletion running...");    }}

    配置拦截器

    <!-- 配置拦截器--><mvc:interceptors><mvc:interceptor>    <mvc:mapping path="/**"/>        <bean class = "com.cs.interceptor.MyHandlerInterceptor"/>    </mvc:interceptor></mvc:interceptors>

    测试拦截器的拦截效果\

    @ResponseMapping("/test1")@ResponseBodypublic ModelAndView quickMethod() throws Exception{    System.out.println("目标方法执行");    ModelAndView modelAndView = new ModelAndView();    modelAndView.addObject("name","bestcollc");    modelAndView.setViewName("index");    return modelAndView;}测试结果:    preHandle running....    目标方法执行    postHandle running...    afterCompletion running...

    1.4 多拦截器操作

    同上,在编写一个MyHandlerInterceptor2操作,测试执行顺序

    1.5 拦截器方法说明

    方法名说明
    preHandle()方法将在请求处理之前进行调用,该方法的返回值是布尔值Boolean类型的,当它返回为false 时,表示请求结束,后续的Interceptor 和Controller 都不会再执行;当返回值为true 时就会继续调用下一个Interceptor 的preHandle 方 法
    postHandle()该方法是在当前请求进行处理之后被调用,前提是preHandle 方法的返回值为true 时才能被调用,且它会在DispatcherServlet 进行视图返回渲染之前被调用,所以我们可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作
    afterCompletion()该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行,前提是preHandle 方法的返回值为true 时才能被调用

    2. SpringMVC异常处理

    2.1 异常处理的思路

    系统中异常包括两类:预期异常运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发生。

    系统的DaoServiceController出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交

    由异常处理器进行异常处理,如下图:

    Spring MVC的拦截器与异常处理机制是什么

    2.2 异常处理的两种方式

    • 使用Spring MVC提供的简单异常处理器 SimpleMappingExceptionResolver

    • 实现Spring 的异常处理接口HandlerExcepionResolver自定义自己 的异常处理器

    2.3 简单的异常处理器SimpleMappingExceptinResolver

    SpringMVC已经定义好了该类型转换器,在使用时可以根据项目情况进行相应异常与视图的映射配置

    <!--配置简单映射异常处理器 --><bean      class = "org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><propertyname="defaultErrorView" value="error"/>   默认错误视图    <property name="exceptionMappings"    <map>    <entry key="com.cs.exception.Myexception" value="error"/>                    <entry key="java.lang.ClassCastException" value="error"/>    </map></property></bean>

    2.4 自定义异常处理步骤

    • 创建异常处理器类实现HandlerExceptionResolver

    • 配置异常处理器

    • 编写异常页面

    • 测试异常跳转

    创建异常处理器类实现HandlerExceptionResolver

    public class MyExceptionResolver implements HandlerExceptionResolver {@Override    public ModelAndView resolveException(HttpServletRequest request,     HttpServletResponse response, Object handler, Exception ex) {        //处理异常的代码实现        //创建ModelAndView对象        ModelAndView modelAndView = new ModelAndView();        modelAndView.setViewName("exceptionPage");        return modelAndView;} }

    配置异常处理器

    <bean id="exceptionResolver"      class="com.cs.exception.MyExceptionResolver"/>

    编写异常页面

    <%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head>    <title>Title</title></head><body>    这是一个最终异常的显示页面 </body></html>

    测试异常跳转

    @RequestMapping("/quick22")@ResponseBody publicvoidquickMethod22()throwsIOException,ParseException{    SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yyyy-MM-dd");    simpleDateFormat.parse("abcde");}

    关于“Spring MVC的拦截器与异常处理机制是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Spring MVC的拦截器与异常处理机制是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Spring MVC的拦截器与异常处理机制是什么

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Spring MVC的拦截器与异常处理机制是什么

    这篇文章主要介绍了Spring MVC的拦截器与异常处理机制是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring MVC的拦截器与异常处理机制是什么文章都会有所收获,下面我们一起来看看吧。1. Sp
    2023-06-29

    qt异常处理机制是什么

    Qt异常处理机制是一种用于处理程序运行时的异常的机制。它允许开发人员捕获和处理在程序执行期间发生的异常,以便更好地控制程序的行为。Qt异常处理机制主要基于C++异常处理机制,它使用try-catch语句块来捕获异常,并使用throw语句来抛
    2023-09-22

    Struts2中的异常处理机制是什么

    这期内容当中小编将会给大家带来有关Struts2中的异常处理机制是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。声明式异常捕捉Struts2的异常处理机制是通过在struts.xml文件中配置
    2023-05-31

    PL/SQL异常处理机制是什么

    PL/SQL异常处理机制是一种用于处理运行时错误和异常情况的技术。当PL/SQL程序执行过程中发生错误或异常时,可以使用异常处理机制来捕获和处理这些异常,以便程序可以继续执行或者提供更好的错误信息给用户。异常处理机制通常包括以下几个关键步
    PL/SQL异常处理机制是什么
    2024-05-08

    java异常处理机制原理是什么

    Java异常处理机制的原理是基于异常(Exception)的概念。在Java中,异常是指在程序运行过程中发生的错误或异常情况。当代码出现异常时,可以使用异常处理机制来捕获和处理异常,以保证程序的正常运行。Java的异常处理机制基于三个关键词
    2023-09-16

    java中异常处理机制的原理是什么

    Java中的异常处理机制是基于异常类的继承关系和异常处理代码块的机制。当程序发生异常时,会抛出一个异常对象,该异常对象会沿着调用链向上抛出,直到被捕获并处理或者直到程序终止。Java中的异常类都是从java.lang.Throwable类派
    2023-08-31

    Java线程的异常处理机制是什么

    本文小编为大家详细介绍“Java线程的异常处理机制是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java线程的异常处理机制是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言启动一个Java程序,本质
    2023-07-02

    .NET4中异常处理的新机制是什么

    本篇内容介绍了“.NET4中异常处理的新机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在.NET 4.0之后,CLR将会区别出一些
    2023-06-17

    php的错误和异常处理机制是什么

    本篇内容主要讲解“php的错误和异常处理机制是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php的错误和异常处理机制是什么”吧!一、PHP的错误处理错误类型在PHP开发中,错误通常分为三种
    2023-07-05

    spring全局异常处理的原理是什么

    Spring全局异常处理的原理是通过定义一个统一的异常处理器来捕获和处理应用程序中的任何异常。当应用程序发生异常时,Spring会将异常交给全局异常处理器进行处理,然后根据异常类型,选择合适的处理方式,如返回错误信息、跳转到错误页面、记录日
    2023-10-20

    C语言异常处理机制的概念是什么

    这篇“C语言异常处理机制的概念是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言异常处理机制的概念是什么”文章吧。异
    2023-06-17

    c++异常处理机制是怎么样的

    这篇文章主要介绍了c++异常处理机制是怎么样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。当一个程序出现错误时,它可能的情况有3种:语法错误,运行时错误和逻辑错误。语法错误
    2023-06-17

    C++ 技术中的异常处理:异常传播机制的原理和要点是什么?

    异常传播机制:当一个函数发生异常时,它会向上层函数传播,直到被捕获或继续传播。要点:1)异常抛出通过 throw 实现;2)捕获异常使用 try-catch 块;3)重新传播异常使用 rethrow。C++ 异常处理中的异常传播机制:原理和
    C++ 技术中的异常处理:异常传播机制的原理和要点是什么?
    2024-05-09

    Spring Cloud中Hystrix服务降级与异常处理的方法是什么

    本篇内容主要讲解“Spring Cloud中Hystrix服务降级与异常处理的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Cloud中Hystrix服务降级与异常处理的
    2023-06-19

    Spring访问数据库异常的处理方法是什么

    Spring访问数据库异常的处理方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用JDBC API时,很多操作都要声明抛出java.sql.SQLExceptio
    2023-06-17

    c#中Task.Wait()与awaiat Task异常处理的区别是什么

    这篇“c#中Task.Wait()与awaiat Task异常处理的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“
    2023-07-02

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录