返回顶部
首页 > 资讯 > 后端开发 > Python >详解SpringMVC的拦截器与异常处理机制
  • 967
分享到

详解SpringMVC的拦截器与异常处理机制

2024-04-02 19:04:59 967人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1.springMVC拦截器1.1拦截器(interceptor)的作用1.2拦截器和过滤器的区别1.3拦截器的快速入门1.4多拦截器操作1.5拦截器方法说明2.springmv

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 拦截器的快速入门

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

1.创建拦截器类 实现HandlerInterceptor接口

2.配置拦截器

3.测试拦截器的拦截效果

创建拦截器类 实现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")
@ResponseBody
public 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前端控制器交

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

在这里插入图片描述

2.2 异常处理的两种方式

  • 使用Spring MVC提供的简单异常处理器 SimpleMappingExceptionResolver
  • 实现Spring 的异常处理接口HandlerExcepionResolver自定义自己 的异常处理器

2.3 简单的异常处理器SimpleMappingExceptinResolver

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

<!--配置简单映射异常处理器 -->
<bean
      class = "org.springframework.WEB.servlet.handler.SimpleMappingExceptionResolver">
		<property	name="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
  • 配置异常处理器
  • 编写异常页面
  • 测试异常跳转

1.创建异常处理器类实现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;
	} 
}

2.配置异常处理器

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

3.编写异常页面

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

4.测试异常跳转

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

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!     

--结束END--

本文标题: 详解SpringMVC的拦截器与异常处理机制

本文链接: https://lsjlt.com/news/140801.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解SpringMVC的拦截器与异常处理机制
    目录1.SpringMVC拦截器1.1拦截器(interceptor)的作用1.2拦截器和过滤器的区别1.3拦截器的快速入门1.4多拦截器操作1.5拦截器方法说明2.SpringMV...
    99+
    2024-04-02
  • Java SpringMVC拦截器与异常处理机制详解分析
    目录拦截器(interceptor)的作用拦截器快速入门案例:用户登录权限控制拦截器方法说明SpringMVC异常处理异常处理的思路异常处理两种方式拦截器(interceptor)的...
    99+
    2024-04-02
  • Spring MVC的拦截器与异常处理机制是什么
    这篇文章主要介绍了Spring MVC的拦截器与异常处理机制是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring MVC的拦截器与异常处理机制是什么文章都会有所收获,下面我们一起...
    99+
    2023-06-29
  • Java SpringMVC异常处理机制详解
    目录异常处理的思路测试环境准备异常处理两种方式方式一:简单异常处理器方式二:自定义异常处理器总结异常处理的思路 测试环境准备 首先写一个DemoController控制层的类作为测...
    99+
    2024-04-02
  • 详解SpringMVC中的异常处理机制
    目录开头1.ExceptionHandlerExceptionResolver2. demo开头 试想一下我们一般怎么统一处理异常呢,答:切面。但抛开切面不讲,如果对每一个contr...
    99+
    2024-04-02
  • java异常处理拦截器详情
    使用异常处理拦截器,可以不用写那么多try…catch…。 我有个功能,就是前端提交短信内容到后端,后端进行一系列的处理,其中是要将短信内容提交到公共短信接口。微服务框架,公共短信接...
    99+
    2024-04-02
  • SpringMVC项目异常处理机制详解
    目录1、异常分类2、自定义项目业务异常3、自定义项目系统异常4、其他异常5、异常代码6、异常处理器7、异常发生1、异常分类 通常分为三类:系统异常(SystemException),...
    99+
    2024-04-02
  • SpringMVC拦截器和异常处理器使用示例超详细讲解
    目录拦截器1、拦截器的配置2、拦截器的三个抽象方法3、多个拦截器的执行顺序异常处理器1、基于配置的异常处理2、基于注解的异常处理拦截器 1、拦截器的配置 SpringMVC中的拦截器...
    99+
    2024-04-02
  • SpringMVC 异常处理机制与自定义异常处理方式
    目录SpringMVC默认处理的几种异常@ResponseStatus异常处理的顺序自定义异常类(SpringMVC的异常处理)①:自定义异常类②:自定义异常处理器③:配置我们的异常...
    99+
    2024-04-02
  • SpringMVC实现文件上传与下载、拦截器、异常处理器等功能
    目录文件下载 文件上传 拦截器 拦截器的配置 多个拦截器的执行顺序 异常处理器 基于配置的异常处理 基于注解的异常处理 总结文件下载 使用ResponseEntity实现下载文件的...
    99+
    2024-04-02
  • 详解SpringMVC HandlerInterceptor拦截器的使用与参数
    目录拦截器概念:拦截器VS过滤器自定义拦截器开发过程:拦截器配置项:多拦截器配置:拦截器概念: 拦截器( Interceptor)是一种动态拦截方法调用的机制,请求处理过程解析核心原...
    99+
    2024-04-02
  • 详解SpringMVC的拦截器参数及拦截器链配置
    目录一、拦截器参数二、拦截器链配置一、拦截器参数 前置处理 public boolean preHandle(HttpServletRequest request, HttpServ...
    99+
    2024-04-02
  • 详解SpringMVC中的异常处理
    目录1.SpringMVC默认三个异常处理类2.@ExceptionHandler注解异常3.@ResponseStatus注解异常4.DefaultHandlerException...
    99+
    2024-04-02
  • 详解SpringMVC的拦截器链实现及拦截器链配置
    目录1、拦截器链实现2、拦截器链的执行顺序1、拦截器链实现 只需定义多个拦截器的 bean,然后在拦截器的配置类中将其逐一添加即可 第一个拦截器的定义: @Component pub...
    99+
    2024-04-02
  • SpringMVC异常处理机制与自定义异常处理方式的示例分析
    这篇文章主要介绍SpringMVC异常处理机制与自定义异常处理方式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!提到异常处理,就不得不提HandlerExceptionResolvers,我们的Dispat...
    99+
    2023-06-25
  • Java 详解异常的处理机制
    目录1.异常概述与异常体系结构1.1异常概述1.2运行时异常与编译时异常1.3异常体系结构2.常见异常1.ArrayIndexOutOfBoundsException2.NullPo...
    99+
    2024-04-02
  • Java SpringMVC 异常处理SimpleMappingExceptionResolver类详解
    Spring3.0 对异常的处理方式总共有两种: 一种是使用 HandlerExceptionResolver 接口,并且 Spring 已经提供默认的实现类 Simple...
    99+
    2024-04-02
  • Golang中异常处理机制详解
    前言 通常我们需要编写好的错误处理方式,在了避免某些程序员滥用异常,于是Go这里直接把异常这一块给砍掉了,最终还是通过返回值来判断程序的异常情况,毕竟Go可是支持多返回值的语言,比如...
    99+
    2024-04-02
  • JAVA异常与异常处理详解
    一、异常简介什么是异常?异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域的情况,称之为异常。java中异常的体系是怎么样的呢?(推荐:java视频教程)Java中的所有不正常类都继承于Throwable类...
    99+
    2020-06-12
    JAVA
  • SpringMVC整合SSM实现异常处理器详解
    目录异常处理器项目异常处理方案项目异常处理代码实现根据异常分类自定义异常类自定义异常编码(持续补充)触发自定义异常异常处理器 程序开发过程中不可避免的会遇到异常现象 出现异常现象的...
    99+
    2022-11-13
    SpringMVC整合SSM SpringMVC 异常处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作