• 调试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方法即可,不在赘述。

  • 相关阅读:
    centos git编译
    Unix/Linux小计
    centos gcc编译
    c++隐式转换(implicit conversion)
    通用c程序Makefile
    对弈的Python学习笔记
    LeetCode最长回文子串
    JDBC09 CLOB文本大对象
    JDBC08时间处理
    JDBC07 事务
  • 原文地址:https://www.cnblogs.com/weiguangyue/p/10929612.html
Copyright © 2020-2023  润新知