原文链接:https://www.longkui.site/program/frontend/pipe/4408/

0.背景
写项目的时候用到了拦截器,会决定哪些接口拦截,哪些接口不拦截。偶尔一次等保测评的时候又遇到了筛选器。这篇文章简单总结一下。

1.拦截器
拦截器,是面向切面编程(AOP,Aspect Oriented Program)的。就是在你的Service或者一个方法前调用一个方法,或者在方法后调用一个方法。比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。

2.筛选器
过滤器,是在java web中将你传入的request、response提前过滤掉一些信息,或者提前设置一些参数。然后再传入Servlet或Struts2的 action进行业务逻辑处理。比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入Servlet或Struts2的action前统一设置字符集,或者去除掉一些非法字符。

通俗理解:
(1)过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。(理解:就是一堆字母中取一个B)
(2)拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。(理解:就是一堆字母中,干预它,通过验证的少点,顺便干点别的东西)

3.区别
①:拦截器是基于java的反射机制的,而过滤器是基于函数的回调。
②:拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。
③:拦截器只对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
④:拦截器可以访问action上下文、值、栈里面的对象,而过滤器不可以。
⑤:在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
⑥:拦截器可以获取IOC容器中的各个bean,而过滤器不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

4.触发
过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。

过滤器包裹servlet,servlet包裹住拦截器

5.场景
SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。

1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。
2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;
3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);
4、通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。
5、OpenSessionInView:如hibernate,在进入处理器打开Session,在完成后关闭Session。

什么是拦截器?什么是过滤器?相关推荐

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

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

  2. 总结 拦截器(Interceptor) 和 过滤器(Filter)的区别

    一.前言 拦截器(Interceptor) 和 过滤器(Filter)的区别是面试中常问的问题,也是开发中容易被大家混淆的问题,在此总结下,希望对大家有所帮助. 二.Filter 介绍 2.1.概念 ...

  3. SpringMVC拦截器与Filter过滤器

    SpringMVC拦截器与Filter过滤器 SpringMVC拦截器与Filter过滤器 Spring MVC拦截器的定义 SpringMVC拦截器的配置 SpringMVC拦截器HandlerIn ...

  4. 拦截器(Inteceptor),过滤器(Filter),切面(Aspect)处理HttpServiceReqeust请求

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

  5. java jax-rs拦截器_java – Servlet过滤器与CXF拦截器,用于修改请求和响应内容?

    在这里回答我自己的问题-我最终使用了一个JAX-RS过滤器,一旦我缺少文档,它就能很好地运行.我使用了 http://cxf.apache.org/docs/jax-rs-filters.html的( ...

  6. SpringMVC框架 学习DAY_03:@RequestMapping注解/拦截器与过滤器

    1. 关于@RequestMapping注解 在控制器中,在处理请求的方法之前添加@RequestMapping注解,可以配置请求路径与处理请求的方法的映射关系! 在@RequestMapping注解 ...

  7. 过滤器、拦截器、监听器的区别与使用

    一.拦截器与过滤器的区别 过滤器 (Filter) 过滤器的配置比较简单,直接实现Filter 接口即可,也可以通过@WebFilter注解实现对特定URL拦截,看到Filter 接口中定义了三个方法 ...

  8. 【学习笔记】springboot的过滤器与拦截器的使用 springboot的事件驱动模型

    文章目录 过滤器 使用过滤器实现访问控制 拦截器 事件驱动模型 过滤器 在实际的开发过程中,可能会遇到这样一类需求:统计在线用户.敏感词过滤或者基于URL进行访问控制.这些需求有一个共同点--在每个接 ...

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

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

  10. Java Servlet 过滤器与 springmvc 拦截器的区别?

    前言:在工作中,遇到需要记录日志的情况,不知道该选择过滤器还是拦截器,故总结了一下. servlet 过滤器 定义 java过滤器能够对目标资源的请求和响应进行截取.过滤器的工作方式分为四种 应用场景 ...

最新文章

  1. 专注NLP,竹间智能完成4500万美元B+轮融资
  2. UI设计十戒--设计师的艺术
  3. VMware Workstation中安装linux系统(CentOS)超详细
  4. 金融贷款逾期的模型构建6——特征选择
  5. 抛弃一键恢复。教你用vista一键还原备份多系统。图文教程
  6. VMware安装以及安装Window7教程
  7. oj系统格式错误_论文查重会不会检查格式?【paperpp吧】
  8. LeetCode 845. 数组中的最长山脉(中心扩展)
  9. kdj指标主要看哪个值_KDJ绝密买卖法则
  10. 高中信息技术必修一第一章思维导图_高中生物必修+选修思维导图最全归纳,从此高中生物无忧!...
  11. oracle数据库笔记---pl/sql的基础使用方法
  12. 51Nod-1087 1 10 100 1000【模拟】
  13. java mysql 博客园_JAVA基础--MySQL
  14. 宣讲会通知|香港科技大学工学院理学硕士线上直播综合场【MSc】
  15. 如何使用动软代码生成器连接oracle生成数据库设计文档
  16. 华为2019届校招笔试题及解法
  17. matlab差分法求解ppt,有限差分法求解薛定谔方程_宫建平.pdf
  18. IgH详解五、从站扫描流程
  19. 简洁的旅行青蛙个人主页纯静态HTML
  20. 【面试宝典】软件测试工程师2021烫手精华版(第一章测试理论篇)

热门文章

  1. 学习笔记整理——vim,vim文件编码,vim配置文件
  2. utl raw mysql_oracle中utl_raw
  3. Java 知识点整理-7.StringBuffer类+冒泡排序+选择排序+二分法+Arrays类+基本数据类型的包装类
  4. 对偶问题和原问题的关系
  5. Android 悬浮窗的使用(2)
  6. Abp 项目生成数据到数据库
  7. 什么是分布式存储系统?
  8. Dynamic Memory Networks DMN+
  9. 三角测量(triangulation)
  10. java StringBuilder追加换行符