什么是拦截器?什么是过滤器?

2023-10-27

原文链接: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。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是拦截器?什么是过滤器? 的相关文章

随机推荐

  • linux查看文件位置

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 查找文件 在linux中 我经常碰到一个问题 就是如何找到某个文件 有时可能是找
  • OkHttp GET 和 POST 的使用

    1 OkHttp 介绍 Android 系统主要提供两种方式来进行 HTTP 通信 HttpURLConnection 和 HttpClient 但是由于 HttpClient 的 API 数量过多 从 Android 2 3 及以后版本中
  • QT MSVC中文编译出错error: C2001: 常量中有换行符

    QT上用MSVC去编译部分含有中文的字符串时会出现编译错误error C2001 常量中有换行符 但用MinGW就不会 需在后面加个正常的字符才能正常编译 但出现乱码了 其编码如下图 明显的看着编码不对 如果想都编译成功 那就需要在设置里把
  • Sqli-labs之Less-24(二次注入)

    Less 24 POST型基于存储的二次注入 随意输入 点击 Forgot your password 翻译 如果你忘记了密码 去黑掉它 点击 New User click here 注册用户 尝试注册一个用户 用户 test1 密码 te
  • STM8单片机STVD环境新建工程笔记

    转载 https blog csdn net sy lixiang article details 8461829 1 新建1个工程目录 依项目的名字来起 2 在上述的目录内新建1个名为STVD的目录 因我们用ST官方的开发环境来新建的工程
  • QT自定义结构体struct—— 基于QVariant 类 用于信号与槽

    1 头文件加 include
  • python openpyxl 向已存在的excel表格中写入数据 及可能出现的Error处理

    虽然平时数据文件读写都是用的 csv 但还是偶然需要把数据写入恶心的excel表格 在CSDN上搜了很多相关的博客 发现都是用的xlutils xlrd xlwd三者的结合 直接拿来用了之后 发现写入后的excel表格就会格式错误打不开 于
  • 从“制造”之城,到“智造”标杆,长沙何以站上发展新高地?

    图片源自网络 文 易不二 来源 智能相对论 ID aixdlun 中国中部的湖南是众多制造业企业走向数字化 网络化 最终以智能制造为目标的聚集地 上个月 长沙城市品牌塑造及国际形象传播研讨会后 11家国际媒体中 越南之声广播电台刊在 中国将
  • 【开关电源四】电源拓扑之Cuk、Sepic、Zeta

    个人主页 highman110 作者简介 一名硬件工程师 持续学习 不断记录 保持思考 输出干货内容 目录 1 Cuk变换器 1 1 Cuk电路工作原理 1 2 Cuk电路输入输出关系推导 2 Sepic变换器 2 1 Sepic电路工作原
  • C盘空间不足怎么清理,详细的c盘清理方法归类

    C盘空间不足怎么清理 当你的计算机告诉你C盘空间不足时 这意味着你需要清理一些文件或程序来腾出更多的空间 在本文中 我们将介绍一些常用的方法 帮助你清理C盘空间 方法一 清理临时文件 许多应用程序和操作系统会在C盘上创建临时文件 这些文件会
  • U盘装完系统之后磁盘容量变小解决办法

    我在用Win32 Disk Imager工具制作U盘系统盘之后 发现U盘大小变为2M 另外的大小没有被分配 解决办法如下 http jingyan baidu com article 59703552e754e48fc00740ed htm
  • 一个tomcat部署多个项目(同端口,多项目,不同访问路径)

    个人觉得简单易操作的两种部署方式 使用tomcat的自动部署 适用于文件和war包 不需要重启tomcat服务 自定义web部署文件 只适用于文件形式的 需要重启tomcat服务 一 自动部署 步骤 浏览器输入127 0 0 1 8080
  • uniapp 小程序中使用逆地址解析 获取当前详细地址

    描述 获取当前定位的经纬度后使用 逆地址解析 获取到详细的地址 uniapp和微信小程序获取地址有两个API getLocation和chooseLocation 但都没有返回省市区等具体信息 那我们可以获取当前经纬度 然后使用逆地址解析接
  • 数据分析案例-大数据相关招聘岗位可视化分析_招聘信息数据集

    文章目录 数据集介绍 数据预处理 数据可视化 数据集介绍 本次数据集来源于xx招聘网共计4223条招聘信息 每条招聘信息字段包括岗位名称 公司名称 工作经验要求 学历要求 工作地点 薪酬 公司规模 发布时间 公司福利共9条字段信息 数据预处
  • 粒子系统学习(1)

    Particle System Duration 产生 发射 粒子的时间 比如不勾选Looping Duration为5 Start Lifetime为6 那么在运行11s的时候粒子效果消失 Looping 是否循环 发射 产生 和Dura
  • [Pyhon疫情大数据分析] 一.腾讯实时数据爬取、Matplotlib和Seaborn可视化分析全国各地区、某省各城市、新增趋势

    思来想去 虽然很忙 但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客 包括网络爬虫 可视化分析 GIS地图显示 情感分析 舆情分析 主题挖掘 威胁情报溯源 知识图谱 预测预警及AI和NLP应用等 希望该系列线上远程教学对您有所
  • DeepLearnToolbox使用总结

    目录 DeepLearnToolbox Directories included in the toolbox Setup GitHub链接 DeepLearnToolbox DeepLearnToolbox A Matlab toolbo
  • CAP、BASE、一致性

    感谢博主 转自 从分布式一致性谈到CAP理论 BASE理论 问题的提出 在计算机科学领域 分布式一致性是一个相当重要且被广泛探索与论证问题 首先来看三种业务场景 1 火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家 通常他是去车站的
  • Visual Studio查找搜索类和方法的快捷方法

    Visual Studio 2010有 Navigate To 命令 键盘快捷键是 CTRL 或 Ctrl T
  • 什么是拦截器?什么是过滤器?

    原文链接 https www longkui site program frontend pipe 4408 0 背景 写项目的时候用到了拦截器 会决定哪些接口拦截 哪些接口不拦截 偶尔一次等保测评的时候又遇到了筛选器 这篇文章简单总结一下