再多学一点Spring之过滤器与拦截器的区别

news2024/11/24 3:42:16

        学习和使用Spring这么久了,我们都用过过滤器和拦截器,但是真要被问到过滤器和拦截器有什么区别,我又一脸懵逼了,回答不上来。今天我们就来学习一下,过滤器和拦截器。

过滤器

        通过实现javax.servlet.Filter接口来自定义过滤器,可以通过@WebFilter注解过滤特定的URL。是Servlet层面的定义。Filter接口定义了三个方法:

        init():方法在容器启动过程中初始化过滤器时被调用,在Filter的整个生命中之后被调用一次。

        doFilter():容器中的每一次请求都会调用该方法,FilterChain是调用过滤器链上的下一个过滤器。

        destroy():当容器销毁时会被调用,在Filter的整个生命中之后被调用一次。

拦截器

        通过实现org.springframework.web.servlet.HandlerInterceptor接口来自定义拦截器。是SpringMvc层面的定义。HandlerInterceptor同样定义了三个方法:

        preHandle():方法会在请求之前被调用,如果方法返回false,将视为当前请求被拦截,后续拦截器不会被执行。

        postHandle():方法会在请求方法调用之后返回结果之前被调用。由于拦截器是个环,会以执行preHandle方法的相反顺序执行postHandle方法。

        afterCompletion():方法会在请求返回结果的时候被调用。

一、调用时机不同

        Filter调用在Servlet之前,Interceptor调用在Servlet之后。

        Filter.doFilter方法参数ServletRequest和ServletResponse。是Request和Response的基类,只能获取最基本的参数。

        Interceptor的方法参数HttpServletRequest和HttpServletResponse是经过DispatcherServlet处理过的

 

实现原理不同

        Filter是基于回调实现的,Interceptor是基于反射实现的。

        我们声明的Filter都有一个参数拦截器链FilterChain,Filter处理完成之后,去调用回调方法chain.doFilter。

 

         Interceptor是依赖Spring一贯的反射机制来实现的。

定义域不同

        Filter由Servlet规范中定义的,而Interceptor是SpringMvc框架的组件。

覆盖范围不同

        Filter可以过滤项目的所有请求,Options请求,静态资源请求;而Interceptor只能覆盖SpringMvc的接口。

控制调用顺序的方式不同

        Filter的调用顺序可以使用@Order注释改变,Interceptor的调用顺序是根据配置的顺序来的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网站被篡改 收录一些非本网站快照跳转如何解决

在实际的网站运营维护过程中&#xff0c;经常发生网站被HACK攻击等情况&#xff0c;尤其网站的标题被篡改为中文关键词<title>&#xff0c;使得网站在百度搜索的索引结果非常的明显&#xff0c;直接在浏览器里打开网站&#xff0c;用肉眼看到的是未被篡改的首页标题。根据…

计算机学徒等级划分

目录 第一级&#xff1a;菜鸟级 第二级&#xff1a;新手级 第三级&#xff1a;入门级 第四级&#xff1a;精通级 第五级&#xff1a;巅峰级 第一级&#xff1a;菜鸟级 概述&#xff1a;你问他计算机是干什么的&#xff1f;他说&#xff1a;“打游戏的&#xff0c;看电影的…

地下水监测系统的构成,优势是什么?

平升电子地下水监测系统由地下水自动监测站监测设备和监测中心平台软件组成。监测设备自动采集、存储地下水水位、水温、水量、水质数据&#xff0c;通过4G/NB-IoT/北斗无线通信网络定时上报至省/市/县级监测中心平台&#xff0c;平台自动接收和存储数据&#xff0c;并对地下水…

排查 Edge WebView2 在某个设备上不出图像的问题

我们在 Windows 应用内嵌入 Edge WebView2&#xff0c;来展示部分用网页实现的界面。总得来说还是不错的&#xff0c;比如&#xff1a; 渲染很快&#xff0c;基本上内置网页100毫秒以内控件样式很清爽&#xff0c;没有多余界面开发需要调用的 API 也不多 但是最近在某个用户那…

2022年山东最新建筑施工架子工(建筑特种作业)模拟题库及答案

百分百题库提供特种工&#xff08;架子工&#xff09;考试试题、特种工&#xff08;架子工&#xff09;考试预测题、特种工&#xff08;架子工&#xff09;考试真题、特种工&#xff08;架子工&#xff09;证考试题库等,提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助…

21天学Python --- 打卡12:python执行jar包

21天学Python --- 打卡12:Python执行jar包1. Subprocess1.1 Method1.2 Execure Jar2. Jpype2.1 Install2.2 Execute Simple Jar2.2.1 Java Code2.2.2 Python Code2.3 Execute Maven Jar3. Awakening1. Subprocess subprocess 是 Python 2.4 中新增的一个模块 1.1 Method subpro…

第二证券|医药板块短期轮动加快 机构看好后市机会

作为现在商场行情继续性最强的职业板块&#xff0c;医药股昨日早盘呈现回调&#xff0c;午后继续反弹&#xff0c;体现出较强的承接动能。机构以为&#xff0c;本轮新冠医治概念主线行情或仍将延续&#xff0c;但个股或将继续分解。 在本轮反弹行情中&#xff0c;医药板块表现较…

postgres 源码解析 44 btree插入流程 btinsert

基于前两篇对btree的基础介绍&#xff0c;本文将从源码角度讲解btree的插入流程&#xff0c;相关至内容见&#xff1a; postgres源码解析41 btree索引文件的创建–1 postgres源码解析42 btree索引文件的创建–2 数据结构 /** BTStackData -- As we descend a tree, we push t…

干货 | 鸿翼&深信服之内容安全3大应用场景实践

随着企业数字化转型的推进&#xff0c;在企业内容管理层面&#xff0c;面临着数据爆发式增长&#xff0c;内容安全合规、海量非结构化数据分散存储&#xff0c;业务系统重建数据难以整合&#xff0c;无法统一管理等问题。 在数据安全层面&#xff0c;随着新威胁层出不穷&#…

Docker的CICD

&#x1f38f;⭕引言 回顾使用docker进行项目部署的步骤&#xff1a; 将项目通过maven进行编译打包将文件上传到指定的服务器中将war包放到tomcat的目录中通过Dockerfile将Tomcat和war包转成一个镜像&#xff0c;由DockerCompose的docker-compose.yml去运行容器 以上操作&#…

frp内网穿透详细安装步骤以及使用

frp是一款内网穿透工具&#xff0c;首先要一台服务器用作服务端&#xff08;Linux&#xff09;&#xff0c;将自己的(WIN10)电脑用作客户端&#xff0c;我将通俗的讲解详细的安装以及使用过程&#xff0c;废话不多直接开始。 Linux要开放 7000 7500 9600端口&#xff0c;一…

Android入门第48天-静态BroadCast之接受开机广播

简介 我们在之前的BroadCast章节中写了动态BroadCast。但我们提过一笔BroadCast也有静态之分&#xff0c;而静态的BroadCast主要用于监听一些如&#xff1a;开机广播、SIM卡拨出插入等广播。这些广播都为静态注册广播事件。因此我们今天就以一个App监听Android开机广播为例子说…

[附源码]Node.js计算机毕业设计高校科研项目申报管理信息系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

三次握手四次挥手和SSL/TLS握手

http(TCP)三次握手四次挥手&#xff1a; 三次握手&#xff1a; SYN&#xff1a;同步位。SYN1 表示进行一个连接请求。 ACK&#xff1a;确认位。ACK1 表示确认有效&#xff0c;ACK0 表示确认无效。 ack&#xff1a;确认号。等于对方发送的序号1。 seq&#xff1a;序号。 握手…

高通Ride软件开发包使用指南(6)

高通Ride软件开发包使用指南&#xff08;6&#xff09;6.2使用SDK设置配置QDrive平台6.3生成SDK配置文件6.4 QDrive功能验证6.2使用SDK设置配置QDrive平台 配置平台 $ cd ~/qride/platform $ ./setup.sh [Platform SOC] 该脚本根据IP地址检测平台&#xff0c;然后推送摄像头Q…

【信息奥赛题解】位数问题(详细题解 C++ 代码)

&#x1f4da; 位数问题 &#x1f680; 题目浏览 【题目名称】位数问题 【题目描述】 在所有的 NNN 位数中&#xff0c;有多少个数中有偶数个数字 333 ? 由于结果可能很大&#xff0c;你只需要输出这个答案对 123451234512345 取余的值。 【输入】 读入一个数 N(N≤1000…

【Redis】数据类型操作一 (key/String/List)

文章目录0、Redis键(key)1、Redis字符串(String)2、Redis列表(List)实操0、Redis键(key)1、Redis字符串(String)2、Redis列表(List)0、Redis键(key) 切换数据库 select dbid select 8 清空数据库 flushdb &#xff08;清空当前库&#xff09; flushall &#xff08;通杀全部库…

python机器学习与深度学习在气象中如何应用??如台风预报数据智能订正、预测风电场的风功率、预测浅水方程模式

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

年终洞察:日本正兴起一波“反向海淘”

这两天&#xff0c;正在日本备婚的李杨&#xff08;化名&#xff09;收到了“漂洋过海”从Starday跨境电商服务平台买来的喜庆装饰品&#xff0c;“这些烘托传统中国婚礼的独特装饰品在日本是很难买到的”从她打开Starday跨境电商服务平台&#xff0c;选择心仪的装饰品并并下单…

[附源码]Python计算机毕业设计高校线上教学系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…