servlet和filter,interceptor等的区别,经典中的经典。

面试官:Servlet Filter和Spring MVC Interceptor有哪些区别? 介绍 做Web开发,我们经常要和Servlet Filter,Spring MVC Interceptor打交道,它们都能对请求进行拦截,那么它们有哪些区别呢? Servlet Filter Filter的使用 可能很多小伙伴没怎么用过Filter,我就简单演示一下 1.在web.xml中配置2个Filter <filter-mapping> <filter-name>logFilter</filter-name> <url-pattern>. 阅读详情
1)servlet和filter的区别
Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

2)servlet、filter、interceptor的执行顺序

通过上图可以看到,顺序应该是我们配的filter在前,之后是struts2的FilterDispatcher,然后是各个拦截器,最后原路返回。
cwx714 (架构师) 2010-05-10


filter与servlet:
http://www.cnblogs.com/Fskjb/archive/2010/03/27/1698448.html

filter 与 struts 拦截器
http://bruceyoo.iteye.com/blog/631355
http://jwx0925.iteye.com/blog/631968

Struts2中拦截器与过滤器的执行顺序证明:
http://blog.163.com/mail_sv/blog/static/13853926420102295392416/

==============
略多细读
Anddy (架构师) 2010-05-11
引用
servlet和filter有什么区别


看Servelt规范:
引用
A filter is a reusable piece of code that can transform the content of HTTP requests, responses, and header information. Filters do not generally create a response or respond to a request as servlets do, rather they modify or adapt the requests for a resource, and modify or adapt responses from a resource.


简要翻译下:
filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。

再在看Filter的继承体系(不继承Servlet接口):

Java代码   收藏代码
  1. public interface Filter  


所以第一个结论:Servlet和Filter没有关系!但是2者可以很好的协同工作。


引用

servlet、filter、interceptor


首先,关于Interceptor。Interceptor是XWork中引入的概念,Struts2的核心是XWork2。Struts2的DispatcherFilter从SerlvetContainer中,获取到HTTP请求,然后交由内部的Interceptor处理。

Interceptor不是Servlet JSR中的概念。所以Interceptor与其他Filter的执行顺序,取决于Struts2的DispatcherFilter与其他Filter的执行顺序。


问题变为: Servlet  Filter  Struts2的DispatcherFilter的执行顺序。

在Servlet JSR中说明了Servlet和Filter执行的顺序:

如果一个请求匹配了一个Serlvet,并且该Servlet配置了一个或者多个Filter,毫无疑问,先执行Filter,再执行Servlet。

对与多个匹配的Filter,哪个先执行呢?

JSR中说明的是,按照多个匹配的Filter,是按照其在web.xml中配置的顺序来执行的。

所以这也就是,把自己的Filter或者其他的Filter(比如UrlRewrite的Filter)放在Struts的DispatcherFilter的前面的原因。因为,它们需要在请求被Struts2框架处理之前,做一些前置的工作。

当Filter被调用,并且进入了Struts2的DispatcherFilter中后,Struts2会按照在Action中配置的Interceptor Stack中的Interceptor的顺序,来调用Interceptor。


xiaolongfeixiang (资深架构师) 2010-05-11
其实你可以把 Interceptor理解为 Struts的Filter调用的方法。这样你就清楚了。

这个流程和以前的  Filter-> Servlet 一样的。
xiaolongfeixiang (资深架构师) 2010-05-11


引用
org.apache.struts.action.ActionServlet


这个是struts 中最核心的servlet,所有的请求都是通过它。
Anddy (架构师) 2010-05-11
看看这张图,再看看这篇文章,应该明白了servlet跟action之间的关系。action只是处理业务逻辑,并不是servlet。ActionServlet才是struts中控制器,在底层负责所有的转发,分配处理等。



http://cheng5259.iteye.com/blog/638716
Anddy (架构师) 2010-05-11
【8】mctp & pldm 异步会check seq,保证不丢包,虽然发一条req,不用等,但是不能发下一条req,等上条response回来后才能发下一条。TO(tag owner)=1是request,TO=0是response,但是异步通信response由0改为1。如下还有kcs,i3c,serial等。 阅读详情

相关推荐

pi-star图形界面安装指南

pi-star图形界面安装指南,MMDVM热点安装,树莓派3B+热点

blueisman的专栏 1908

servlet包:过滤器(Filter) 拦截器(Interceptor)执行顺序

过滤器 拦截器

qq_18950983的博客 1282

大疆Livox Mid-70雷达的使用

一、前期准备 (一)、使用Livox Viewer测试雷达 1、设置静态IP sudo ifconfig enx081f7152092a 192.168.1.50 查看IP是否设置成功 lacyexsale@lacyexsale-KLV-WX9:~$ ifconfig enx081f7152092a Link encap:以太网 硬件地址 08:1f:71:52:09:2a inet 地址:192.168.1.50 广播:192.168.1.255 掩码:255.255.25

LacyExsale的博客 1万+

拦截器(Interceptor)和过滤器(Filter)的执行顺序和区别

一.区别 1.过滤器(Filter) 首先说一下Filter的使用地方,我们在配置web.xml时,总会配置下面一段设置字符编码,不然会导致乱码问题: <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-

weixin_42408447的博客 3439

LTSPICE使用教程:入门指导

LTSPICE仿真工具入门指导

焊武大帝的专栏 5万+

COMSOL中的动网格

首先我们先了解几个概念 (1)网格重划分(remesh):就是在某些特定的区域进行网格的重新划分,在Maxwell软件中的直线运动区域,当运动物体运动后,这个区域进行重新划分。 (2)morph:网格不重新划分,小范围的进行网格变形,针对运动物体运动位移较小,对变形区域不进行重划分,能够提高效率。 (3)网格滑移(sliding):针对圆形运动区域,运动与非运动区域进行网格滑移,当然边界上两侧网格不共节点,该方法不需要网格重新划分,大部分软件针对圆形运动区域采用该方法,比如maxwell的band,b

midiio的博客 7869

Filter servlet interceptor 的执行顺序问题

背景 最近在做一个一个移动端h5项目的后端应用,接口联调时前端反应说登录有问题,先简单介绍一下我们的权限实现。jwt加spring security,使用redis做的session中心存放token。 1.前端请求登录接口,核对成功返回用户信息和token,同时将此信息保存于redis中 2.访问后端接口需要将token保存于header中,请求先经过安全Filter,会从token中解析出su...

黄杨路打字员 983

unity6000.0.3版本URP下ScriptableRendererFeature如何实现一张自定义贴图效果?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 584

filter、servlet、interceptor的执行顺序

1. Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。   通过上图可以看到,顺序应该...

yxwang0615的专栏 740

【ComfyUI专栏】ComfyUI 数字人方案-ComfyUI-EchoMimic

EchoMimic是一个基于图片和语音的数字人生成方案,通过ComfyUI节点实现。该方案安装简单,需下载特定模型文件(Unet、AudioProcessor和VAE)并保存本地。相比其他数字人生成方案,其节点操作更简便,支持多种Pose姿态选择,并能结合视频内容进行姿态同步,通过音频同步口型实现动态内容创建。生成的数字人效果直观,适用于快速创建个性化数字形象。

技术与管理的平衡木- 464

YOLOv8/YOLOv11目标检测系统与多目标跟踪检测系统,使用PySide6搭建目标检测系统,支持目标检测、分割、姿势估计、旋转框,用户端系统+后台管理系统可用于大论文凑工作量或毕设必备

YOLOv8/YOLOv11目标检测系统与多目标跟踪检测系统,目标检测、分割、姿势估计、obb(旋转框),用户端系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程,系统支持 目标检测、分割、姿势估计、obb(旋转框)等模型进来检测,是一个通用的目标跟踪与目标检测系统,适配多种场景如:鱼苗检测与跟踪、行人多目标跟踪、车辆多目标跟踪、牛只行为识别与跟踪、口罩佩戴检测、安全帽佩戴检测、火灾检测等。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

Interceptor的用法以及和Filter的区别

1 拦截器接口 SpringMVC的拦截器Interceptor类似于Javaweb的Filter过滤器 //拦截器就是是一个实现接口HandlerInterceptor的类 public interface HandlerInterceptor { //在目标方法调用前执行,true是表示放行方法(chain.doFilter()),false表示不放行 default boolean preHandle(HttpServletRequest request, HttpServletRe

wwwwwww31311的博客 2253

Ubuntu-22.04安装VMware虚拟机并安装Windows10

最近在研究虚拟机,主要集中在KVM、Virtualbox和VMware这三种虚拟机上。前面我已经研究了前两种虚拟机的安装和使用方式,这篇文章介绍3兄弟中最后一个虚拟机安装和使用方式。Virtualbox虚拟机安装和使用KVM虚拟机安装和使用相比于前两种,VMware的安装方式最麻烦,但是综合体验下来我感觉流畅度最好。如果你确实有在Linux上使用VMware虚拟机的需求,那不妨跟着我看下去吧。1、gcc版本和内核版本一定要匹配上,否则会出各种错误。

jiexijihe945的博客 4114

servlet 和filter区别和servlet、filter、interceptor的执行顺序

1)servlet和filter的区别 Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filte

j2eelamp的专栏 6560

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Interceptor、Filter、Servlet有什么区别?执行顺序是什么?

前言 JAVA WEB项目中,Interceptor和Filter都拦截并处理请求,都是一种面向切面的编程思想,但是他们有什么区别呢?一个工程中有很多Interceptor和Filter,他们执行顺序如何?与Servlet又有什么区别呢?本篇文章为你解密! 过滤器(Filter) 我们知道Filter是配置在web.xml时,比如配置如下面一段字符编码Filter: <...

java的平凡之路 1688

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Interceptor、Filter、Servlet的区别

原文参照: https://mp.weixin.qq.com/s/cFDmHf59UAvHP9_qswbMFA https://mp.weixin.qq.com/s/QJuBUKXS-FoFBbf7N84QpA 一、关系图理解 二、过滤器(Filter)   定义:Filter依赖于servlet容器。在实现上,基于函数回调,它可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初...

优快云_KONGlX的博客 696

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Filter 和 Interceptor区别

Filter和Interceptor的联系和区别 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/456610808?utm_source=wechat_session&utm_medium=social&utm_oi=1197944133762072576&utm_campaign=shareopn 《Filter简述和@Filter注解使用》主要对过滤器Filter进行了简单的说明,本文将对拦截器Interceptor进行简单讲解,并通

arispy的博客 1928

servlet、filter、listener、interceptor之间的区别和联系

写这篇博客主要是为了巩固一下自己的基础,工作了之后一直接触的都是框架上的使用以及业务上的了解,逐渐的把一共重要的基础知识点给遗漏了,在这里就先整理对比一下servlet、filter、listener、interceptor之间的区别和联系。

深存少年梦 1062

springboot中filter、interceptor的区别和实例

从概念上来讲,filter是servlet规范定义的,而interceptor是spring定义的。   作用在什么位置?   一次会话,请求在进入servlet容器执行service()方法之前就会经过filter过滤(上图步骤1),在离开servlet容器相应客户端的时候也会经过过滤器(上图步骤7)。而interceptor,分两种情况,一种是对会话的拦截,需要定义类实现spring...

moonpure的专栏 3591

servlet、filter、listener、interceptor

servletservlet??????????java????,?????????????,?????????web??,????????????????????Servlet ??????????????????,???? Web ??? 1) ????????????; 2) ??????????? Servlet; 3) Servlet ???????????????????????,??

wwhhff11 2723

Spring的Interceptor和Servlet的Filter区别

1.拦截器和Filter区别 2.SpringMVC配置前端控制器 在web.xml中配置 3.SpringMVC工作流程: 核心架构的具体流程步骤如下: 1、首先用户发送请求——&gt;DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制; 2、DispatcherServlet——&gt;Handler...

qq_40272613的博客 1425

web.xml中servlet ,filter ,listener ,interceptor的作用与区别

一、概念:          1、servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。S

netdevgirl的专栏 1万+

必会系列之 filter 和 interceptor 的区别

什么是Filter 在java的javax.servlet下有一个接口Filter。任何实现了Filter接口的类都可以称之为filter。Filter的主要用途是设置字符集、控制权限、控制转向等等。在使用filter的过程中,如果是传统的web项目,带有web.xml文件这种。我们需要在xml里面进行配置。比如下面这样。 <filter> <description>字符集过滤器</description> <filter-n

经典鸡翅 775

探析Filter、Interceptor、Listener、Servlet

Filter:过滤器。只希望符合预期的请求进来Filter在 Servlet 容器里面,但在 Servlet 执行前(可以理解成 Servlet 的前置和后置处理器)Interceptor:拦截器。干涉预期的请求Interceptor在Spring 层面,拦截 Controller 调用Listener:监听器。监听这些请求具体做了什么。不属于哪个层面,被动监听事件,不改变请求链监听器类型有很多,一大类是Servlet监听器,一大类是Spring Boot监听器。:监听应用启动和销毁。

aiya123ax的博客 846

Servlet、Filter、Listener、Interceptor区别

1、角色说明 Servlet、Filter、Listener这三种角色是在JSP/Servlet规范中定义的,Interceptor这个角色不在这个规范中,Interceptor是某些MVC框架中的角色,比如Struts2中,Interceptor是用来拦截Action中的方法的调用,在被拦截的Action方法被执行前,先执行响应的拦截器中的方法。servlet、filter、listener是

cpazstido2018的博客 483

filter和interceptor的区别

前言 最近在面试的时候,被问到了这个问题,觉得答得不是很好,在此进行整理和记录,供自己学习,也希望能帮助到大家。 什么是Filter 在java的javax.servlet下有一个接口Filter。任何实现了Filter接口的类都可以称之为filter。Filter的主要用途是设置字符集、控制权限、控制转向等等。在使用filter的过程中,如果是传统的web项目,带有web.xml文件这...

经典鸡翅 1251
上一篇: 如何用struts2+easy ui的使用
下一篇: 怎样在filter-mapping中配制多个url-pattern?
jalorchen_8378
博客等级 码龄15年 2粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值