拦截器 是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。

作用:可以构成拦截器栈,完成特定功能。比如日志记录、登录判断、权限检查等作用。

好处:拦截器也可以让你将通用的代码模块化并作为可重用的类。

拦截器的应用:AOP、需要有一些业务逻辑(需要注入Bean等)

理解
拦截器可以说相当于是个过滤器:就是把不想要的或不想显示的内容给过滤掉。拦截器可以抽象出一部分代码可以用来完善原来的方法。同时可以减轻代码冗余,提高重用率。
比如在登入一个页面时,如果要求用户密码、权限等的验证,就可以用自定义的拦截器进行密码验证和权限限制。对符合的登入者才跳转到正确页面。这样如果有新增权限的话,不用在action里修改任何代码,直接在interceptor里修改就行了。

拦截器执行流程:

(1)、程序先执行preHandle()方法,如果该方法的返回值为true,则程序会继续向下执行处理器中的方法,否则将不再向下执行;

(2)、在业务处理器(即控制器Controller类)处理完请求后,会执行postHandle()方法,然后会通过DispatcherServlet向客户端返回响应;

(3)、在DispatcherServlet处理完请求后,才会执行afterCompletion()方法。

配置

1.声明一个自定义拦截器实现HandlerInterceptor 接口

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Component
public class HelloIntercepter  implements HandlerInterceptor {Logger log = LoggerFactory.getLogger(HelloIntercepter.class);/*** 进入controller方法之前* @param request* @param response* @param handler* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {log.info("拦截器------------------prehandle");//业务处理判断拦截//true放行//false不放行return true;}/*** 方法内部处理完成,页面渲染之前* @param request* @param response* @param handler* @param modelAndView* @throws Exception*/@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {log.info("postHandle");}/*** 页面渲染之后* @param request* @param response* @param handler* @param ex* @throws Exception*/@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response,Object handler, Exception ex) throws Exception {log.info("afterCompletion");}}

2.创建一个Config去实现WebMvcConfigurer,注册自定义拦截器

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class ConfigOne implements WebMvcConfigurer {@Autowiredprivate HelloIntercepter loginInterceptor;// 这个方法是用来配置静态资源的,比如html,js,css等等@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {}// 这个方法用来注册拦截器,我们自己写好的拦截器需要通过这里添加注册才能生效@Overridepublic void addInterceptors(InterceptorRegistry registry) {//注册拦截器InterceptorRegistration ir=registry.addInterceptor(new HelloIntercepter());//配置拦截路径ir.addPathPatterns("/**");//加拦截路径才会走配置的拦截器(进行相关业务判断)//配置不拦截路径ir.excludePathPatterns("/login");}}

3、访问路径看是否拦截(login我在上面配置了不拦截,所以不会走拦截器)


4.上面配置所有路径都走拦截器,所以除了排除的都走拦截器


这个走了拦截器!!!!
这里我是通过Bean的方式创建拦截器的,还有注解的方式,期待下一期哈,加油!

搜集了拦截器和过滤器的区别

1、过滤器基于函数回调、拦截器基于反射;

2、过滤器几乎对所有请求起作用,拦截器只对目标执行方法起作用;

3、过滤器对请求进行预处理、再交给Servlet处理并且生成响应,最后Filter再对服务器响应进行后处理;

拦截器可以在方法执行前调用(preHandle),方法执行后调用(postHandle),视图页面渲染后调用(afterCompletion)。

拦截器Interceptor相关推荐

  1. Flume-NG源码阅读之SourceRunner,及选择器selector和拦截器interceptor的执行

    在AbstractConfigurationProvider类中loadSources方法会将所有的source进行封装成SourceRunner放到了Map<String, SourceRun ...

  2. Struts2拦截器(Interceptor)原理详解

    1.    理解拦截器 1.1.    什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作 ...

  3. struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo

    理解 Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起 ...

  4. Springmvc中的拦截器interceptor及与过滤器filter的区别

    一.Springmvc中的拦截器概述及与过滤器filter的区别 1).Springmvc中的拦截器interceptor用于对控制器controller进行预处理和后处理的技术; 2).可以定义拦截 ...

  5. springboot中的拦截器interceptor和过滤器filter,多次获取request参数

    大家好,我是烤鸭:     这是一篇关于springboot的拦截器(interceptor)和过滤器(Filter). 先说一下过滤器和拦截器. 区别: 1. servlet请求,顺序:Filter ...

  6. JavaWeb中监听器Listener+过滤器filter+拦截器interceptor区别

    JavaWeb中监听器Listener+过滤器filter+拦截器interceptor区别 如果从整个项目中看,一个servlet请求的执行过程就变成了这样context-param–>lis ...

  7. 60-50-010-API-Kafka producer拦截器(interceptor)

    文章目录 1.视界 概述 1.视界 概述 Producer拦截器(interceptor)是个相当新的功能,它和consumer端interceptor是在Kafka 0.10版本被引入的,主要用于实 ...

  8. SpringMVC→拦截器、SpringMVC拦截器实现、多个拦截器工作原理、拦截器使用场景、拦截器Interceptor与过滤器Filter区别

    拦截器 拦截器实现 多个拦截器工作原理 拦截器使用场景 请求编码设置及请求登录Session校验 使用时间段设置 拦截器Interceptor与过滤器Filter区别

  9. Kafka详解与总结(七)-Kafka producer拦截器(interceptor)

    1. 拦截器原理 Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑. 对于producer而言,interceptor ...

  10. 用 Java 实现拦截器 Interceptor 的拦截功能

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

最新文章

  1. python自动修图_程序员不会用PS给女朋友修图?没关系,用Python十行代码轻松搞定-站长资讯中心...
  2. 算法提高 c++_ch04_02_修正版
  3. 28款网页CSS设计工具和生成器
  4. 全套 ArcGIS 软件安装(Windows 平台)
  5. java的css的块_JavaWeb--了解CSS
  6. 100道Java中高级面试题汇总+详细拆解
  7. UITableView介绍 之 复杂cell的高度计算
  8. 教你用Java获取IP归属地
  9. ❤520给她准备的情人节礼物~html+css+javascript漫天飞雪3D相册(含音乐)
  10. PMP备考经典题库-敏捷专项练习题一(30道)
  11. 查看ajax传来的数据,jQuery AJAX 方法 success()后台传来的4种数据
  12. cad线性标注样式修改在哪里_CAD标注样式如何设置?
  13. axios和layUI配合加载数据表格demo
  14. 删除顽固的文件夹--删不掉的文件夹update处理方法
  15. python 爬虫与数据可视化
  16. 小米4A千兆版刷机telnet失败解决办法
  17. 电路实验一阶电路误差分析_基于动态综合型等效电路模型的动力电池特性分析...
  18. 西门子 TIA Portal V16 的安装教程
  19. python实现字母的加密和解密 字典_利用Python产生加密表和解密表的实现方法
  20. 2022 FIFA World Cup Final

热门文章

  1. 基于国产FPGA的图像叠加处理卡
  2. 新农业@2022:人、平台和技术
  3. html内外边距怎么设置,css内边距怎么设置?
  4. 2021年塔式起重机司机新版试题及塔式起重机司机试题及解析
  5. 运动员svg图标素材推荐 精品 小众
  6. 上百本中文书籍中对《人月神话》的引用(8)
  7. 配置电脑使Wireshark能抓到有VLAN标签的报文
  8. 《Python爬虫100例》复盘⑦,解决手机APP爬虫环境问题
  9. vim编辑器显示字体颜色
  10. docker flannel网络部署和路由走向分析