Action的生命周期中,拦截器能多次调用,而过滤器只能在容器初始化时被调用一次。如何去理解?

文章讨论了在Servlet应用中,拦截器与过滤器在Action生命周期中的工作方式不同。过滤器基于函数回调,在请求首次到达服务器时调用,因此在整个生命周期中只执行一次。而拦截器利用Java的反射机制,每次请求访问Action时都会进行拦截,导致它可以被多次调用。这种差异源于它们的设计原理和实现机制。
摘要由CSDN通过智能技术生成

Action的生命周期中,拦截器能多次调用,而过滤器只能在容器初始化时被调用一次。如何去理解?
以servlet为例,现在有Aservlet,Bservlet,A拦截器,X过滤器,过滤器匹配到符合自己url描述时执行,但是从servletA转到(forward)servletB的时候是不会再次进行调用的,并且从servletA再到servletB也不会调用,但是A拦截器是每次都执行的。
主要原因还是因为拦截器是基于java的反射机制的,而过滤器是基于函数回调所以拦截器就是每次执行到某servlet都响应所以可以多次,回调函数是调用的时候才会响应所以,那么过滤器调用时只有请求在第一次到达服务端进行分配的时候,所以在整个生命周期只有一次。

个人理解:因为过滤器是基于函数回调的,每一个请求都会创建一个action,当action执行完毕后才会进行函数回调,所以过滤器在action的生命周期中只会执行一次; 而拦截器则是对请求的拦截,每转发请求访问action时,拦截器都会被调用进行拦截,所以拦截器会被多次调用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值