`

Spring MVC拦截器

 
阅读更多

一、拦截器的概念:

java里的拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,

同时也提供了一种可以提取action中可重用部分的方式。在AOP(Aspect-Oriented Programming)中拦截器用于在某个方法或字段被访问之前,

进行拦截然后在之前或之后加入某些操作。

二、工作原理:

springMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServlet,所以只需要在DispatcherServlet上做文章即可,DispatcherServlet也没有代理,

同时SpringMVC管理的Controller也不有代理。哪不难想到我们在执行controller之前做某些动作,执行完毕做某些动作,render完成做某些动作。

SpringMVC的拦截器对应提供了三个preHandle,postHandle,afterCompletion方法。只需在三个方法内写我们需要的逻辑就行,多了都是废话

三、拦截器的使用场景:

使用原则:处理所有请求的共同问题

1、解决乱码问题

2、解决权限验证问题

四、拦截器和过滤器的区别:

过滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西;拦截器可以简单理解为“拒你所想拒”,关心你想要拒绝掉哪些东西

1.拦截器是基于java反射机制的,而过滤器是基于函数回调的。

2.过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。
3.拦截器只对action起作用,而过滤器几乎可以对所有请求起作用。
4.拦截器可以访问action上下文、值栈里的对象,而过滤器不能。
5.在action的生命周期里,拦截器可以多起调用,而过滤器只能在容器初始化时调用一次。
五、拦截器的实现:
1、编写拦截器类实现handInterceptor接口:

2、将拦截器注册进spring MVC框架中:

3、配置拦截器的拦截规则:
(1)

(2)

六、拦截器的方法介绍:
1、preHandle:预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器(如我们上一章的Controller实现);
返回值:true表示继续流程(如调用下一个拦截器或处理器);
false表示流程中断(如登录检查失败),不会继续调用其他的拦截器或处理器,此时我们需要通过response来产生响应;
2、postHandle:后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)
对模型数据进行处理或对视图进行处理,modelAndView也可能为null。
3、afterCompletion:整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,
类似于try-catch-finally中的finally,但仅调用处理器执行链中preHandle返回true的拦截器的afterCompletion。


分享到:
评论

相关推荐

    Spring MVC 拦截器

    ### Spring MVC 拦截器:深入理解与实践 #### 一、概念解析 Spring MVC 框架中的拦截器(Interceptor)是一种重要的组件,它主要用于处理请求与响应的生命周期,提供了一种灵活的方式来实现诸如权限检查、日志记录...

    spring mvc拦截器过滤json中的null值

    本教程将详细介绍如何使用Spring MVC的拦截器来实现这一功能。 首先,了解拦截器(Interceptor)在Spring MVC中的角色。拦截器是Spring MVC提供的一种AOP(面向切面编程)特性,允许我们在请求处理之前、之后或者在...

    Spring MVC 拦截器入门例子

    Spring MVC 拦截器是基于Java的Web开发框架Spring MVC中的一个重要组件,它允许开发者在请求被控制器处理之前或之后执行自定义逻辑。拦截器主要用于实现通用功能,如权限验证、日志记录、性能监控等,从而提高代码的...

    spring mvc 拦截器获取请求数据信息.rar

    在Spring MVC框架中,拦截器(Interceptor)是一个强大的工具,用于在请求被控制器处理之前或之后执行特定的逻辑。它们可以用来实现权限检查、日志记录、性能统计等多种功能。本压缩包“spring mvc 拦截器获取请求...

    详解Spring MVC拦截器实现session控制

    Spring MVC拦截器是Spring Web框架的一个重要组成部分,它允许开发者在处理请求之前或之后执行自定义的操作,例如权限校验、日志记录等。在本篇文章中,我们详细探讨了如何通过Spring MVC拦截器实现session的控制,...

    spring MVC(新增拦截器demo)

    通过学习这个“spring MVC(新增拦截器demo)”项目,你不仅能够理解Spring MVC拦截器的基本使用,还能掌握如何将拦截器应用于实际的需求场景。拦截器的灵活运用可以大大提高代码的复用性和维护性,使得Spring MVC应用...

    Spring mvc拦截器实现原理解析

    Spring MVC拦截器实现原理解析 Spring MVC拦截器是Spring MVC框架中的一种机制,可以对处理器进行预处理和后处理。它类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些...

    Spring MVC 拦截器实现代码

    Spring MVC 拦截器是Spring MVC框架提供的一种机制,用于在请求被控制器处理之前或之后执行特定操作。拦截器可以用来实现通用的功能,如权限验证、日志记录、性能监控等,避免在每个控制器方法中重复这些逻辑。在...

    Spring MVC拦截器_动力节点Java学院整理

    Spring MVC拦截器 Spring MVC的拦截器是属于HandlerMapping级别的,可以有多个HandlerMapping,每个HandlerMapping可以有自己的拦截器。拦截器是实现了org.springframework.web.servlet.HandlerInterceptor接口或...

    Spring MVC 拦截器 interceptor 用法详解

    Spring MVC 拦截器 interceptor 用法详解 Spring MVC 中的拦截器(Interceptor)类似于 Servlet 中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的...

    浅析java中 Spring MVC 拦截器作用及其实现

    这篇文章将深入探讨Spring MVC拦截器的作用、实现方式以及其在实际应用中的使用场景,并对比拦截器与过滤器的区别。 首先,让我们来看看如何实现一个Spring MVC拦截器: 1. **编写拦截器类**:你需要创建一个类并...

    在spring-boot工程中添加spring mvc拦截器

    Spring Boot 中添加 Spring MVC 拦截器 在 Spring Boot 工程中添加 Spring MVC 拦截器是实现请求预处理和后处理的一种常见方式。 Spring MVC 的拦截器(Interceptor)不同于 Filter,可以实现请求的预处理和后处理...

    SpringMVCDemo:Spring MVC 框架知识案例

    1.创建第一个 Spring MVC 程序案例 2.Spring MVC @RequestMapping 注解案例 3.Spring MVC 请求参数的获取案例 4.Spring MVC 域对象共享数据案例 ...14.Spring MVC 拦截器案例 15.Spring MVC 异常处理案例

    spring mvc xml配置拦截器

    下面将详细介绍创建和配置Spring MVC拦截器的步骤。 1. **创建自定义拦截器** 首先,我们需要创建一个实现`HandlerInterceptor`接口的类。这个接口包含三个方法: - `preHandle(HttpServletRequest request, ...

    使用Spring MVC拦截器实现日志记录的方法

    在Spring框架中,MVC拦截器是一种用于对Spring MVC中的请求进行拦截处理的组件。它们在请求处理过程中的某些阶段介入,可以实现诸如日志记录、权限检查、请求处理时间统计等操作。实现日志记录是拦截器使用场景之一...

    Spring MVC拦截器的基本使用方法

    Spring MVC拦截器是在Web应用中对请求进行拦截处理的一种方式,类似于Servlet中的过滤器。Spring MVC拦截器主要用于在控制器(Controller)执行前后进行一些处理工作,如日志记录、权限检查、性能监控等。实现拦截器...

    spring mvc

    在 Spring MVC 中使用拦截器需要以下步骤: 1. **定义拦截器类**:实现 `HandlerInterceptor` 接口或继承 `HandlerInterceptorAdapter` 类。 2. **注册拦截器**:在配置文件中注册拦截器,指定需要拦截的 URL 模式。...

Global site tag (gtag.js) - Google Analytics