Solo  当前访客:1 开始使用


Servlet和Filter的关系

Servlet是什么?

运行在web服务器上的一个应用组件,用来处理http请求,接收参数、处理数据、响应数据

Filter是什么?

在Servlet真正处理数据之前,过请求进行识别并过滤的作用,可以获取到请求的全部数据(但不建议获取数据,ServletRequest 默认实现只能读取一次请求体中的数据,否则在Servlet中就无法获取到请求体中的数据了)

Servlet和Filter的关系是什么?

它们有执行的前后问题,Filter在前,Servlet在后,如果Filter的doFilter方法中return了,则该请求直接结束,不会进入servlet中执行业务

一个客户端请求重复进入Filter的情况

  1. 如果一个请求进入了servlet中执行业务逻辑,servlet根据业务将请求转发或者重定向(相当于客户端重新发送了一个http请求)到另外一个servlet时,过滤器链开始重新执行;
  2. 异步请求:客户端发送请求后,不必等待服务器立即响应,可以继续执行其他任务或接收其他数据。服务器会在后台处理该请求,并在处理完成后,通过某种方式(如回调函数、WebSocket、Server-Sent Events等)将结果通知给客户端

避免一个客户端请求重复进入Filter

自定义的Filter 实现 OncePerRequestFilter 即可,spring 提供了相关的逻辑


标题:Servlet和Filter的关系
作者:temp12138
地址:https://solo.mfyzl.site/articles/2024/03/14/1710380402749.html

标签:
新一篇: 意外和明天,哪个先到呢? 旧一篇: Wrapper 包装模式/装饰器模式