zoukankan      html  css  js  c++  java
  • 调试tomcat的过滤器配置

    javax.servlet.FilterChain的实现类在tomcat只有一个,那就是org.apache.catalina.core.ApplicationFilterChain

    这个FilterChain内部具有ApplicationFilterConfig类型的数组用来存放过滤器链的配置,实际的过滤器对象就放在ApplicationFilterConfig类的实例里面。

    当创建这个FilterChain的时候,其实在加载web.xml文件的时候,就已经创建好Filter了,在这里,其实是根据Request的请求路径,组装到FilterChain里面。

    StandardWrapperValve和ApplicationDispatcher这两个类会创建FilterChain,这里两个类都在invoke方法调用了FilterChain的doFilter方法,只是一个是公有方法,一个是私有方法。


    创建FilterChain需要借助ApplicationFilterFactory,这个静态方法工厂,然后调用createFilterChain方法。

    这里有个疑问,为何调用getInstance方法没有加锁,这里如何判定一定是线程安全的?

    createFilterChain方法其实只是做一件事,把匹配当前路径的FilterConfig加入到FilterChain然后返回这个新创建的FilterChain即可。


    获得创建好的FilterChain,后续只需要调用其doFilter方法即可,不在赘述。

  • 相关阅读:
    B3
    B2
    b1
    个人作业——软件工程实践总结作业
    Beta 答辩总结
    Beta 冲刺 (7/7)
    Beta 冲刺 (6/7)
    Beta 冲刺 (5/7)
    Beta 冲刺 (4/7)
    Beta 冲刺 (3/7)
  • 原文地址:https://www.cnblogs.com/weiguangyue/p/10929612.html
Copyright © 2011-2022 走看看