在服务器中,对于每一个请求,还存在着一个数组,用于存放满足当前请求的所有 Filter 及最终的目标资源。
当请求到达服务器后,服务器会解析出 URI,然后会先从 Filter 的 Map 中查找所有与该 请求匹配的 Filter,每找到一个就将其引用存放到数组中,然后继承查找。直到将所有匹配 的 Filter 全部找到并添加到数组中。 这个数组就是对于当前请求所要进行处理的一个“链”,包含多个 Filter。服务器将按照 这个“链”的顺序对请求进行依次过滤处理。 注意,我们发现对于 Filter 的 Map 的查询过程与对于 Servlet 的 Map 的查询过程是不同 的。对于 Servlet 的 Map 的查询过程是,只要找到一个匹配的 key,则将不再向后查找。而 对于 Filter 的 Map 的查找,则是遍历所有 key,将所有匹配的元素都查找出来。


京公网安备 11030102010736号