对Filter的一些理解
博客专区 > whaon 的博客 > 博客详情
对Filter的一些理解
whaon 发表于5年前
对Filter的一些理解
  • 发表于 5年前
  • 阅读 146
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

tomcat启动后,会调用org.apache.catalina.util.LifecycleBase.start()方法,该方法又会调用org.apache.catalina.core.StandardContext.startInternal()方法,就是在该方法里,启动Listener和Filter,Listener的启动顺序和web.xml中配置的先后顺序一致,而Filter启动的顺序可能和在web.xml中配置的顺序不一致,但是执行doFilter方法时一定是一致的,这一点可以放心,初始化每个Filter时会先调用构造方法,紧接着调用init方法

当访问某个url地址时,org.apache.catalina.core.ApplicationFilterFactory会创建一个ApplicationFilterChain,在这个FilterChain中每次都会把和url匹配的Filter(严格的说,还需要请求方式匹配:REQUEST,FORWARD,INCLUDE等)放进去,也就是说每访问一个url,都会生成一个新的ApplicationFilterChain,然后重新增加相应的Filter

增加完Filter后,就会依次执行doFilter方法,然后执行servlet.service()方法,访问目标资源

其实无论什么web框架都逃脱不了Listener,Filter,Servlet这几个方面

Spring是用了Listener

SpringMVC是用了Servlet

SpringSecurity和struts是用了Filter

标签: filter
共有 人打赏支持
whaon
粉丝 42
博文 36
码字总数 31073
×
whaon
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: