b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

filterconfig struts2执行流程(2)

电脑杂谈  发布时间:2018-02-15 05:13:20  来源:网络整理
if (excludedPatterns != null && prepare.isUrlExcluded(request, excludedPatterns)) {
    chain.doFilter(request, response);
}

这个excludedPatterns是一个List< Pattern >集合,里面包含了不被struts2过滤器拦截的url。filterconfig看这一句:prepare.isUrlExcluded(request, excludedPatterns),判断这个请求里面是否包含这样的url,跟进源码查看一具体的实现:

public boolean isUrlExcluded( HttpServletRequest request, List<Pattern> excludedPatterns ) {
    if (excludedPatterns != null) {
        // 1.获取当前请求中的uri
        String uri = RequestUtils.getUri(request);
        // 2.查看集合中是否有与之匹配的,有就返回true
        for ( Pattern pattern : excludedPatterns ) {
            if (pattern.matcher(uri).matches()) {
                return true;
            }
        }
    }
    return false;
}

知道了是通过excludedPatterns来判断哪个url不被拦截,那么这个excludedPatterns的值是从哪里来的呢?初步猜测是在StrutsPreparedAndExecuteFilter初始化(init)的时候设置的…果不其然,看源码:

public void init(FilterConfig filterConfig) throws ServletException {
    InitOperations init = new InitOperations();
    Dispatcher dispatcher = null;
    try {
        FilterHostConfig config = new FilterHostConfig(filterConfig);
        init.initLogging(config);
        dispatcher = init.initDispatcher(config);
        init.initStaticContentLoader(config, dispatcher);

        prepare = new PrepareOperations(filterConfig.getServletContext(), dispatcher);
        execute = new ExecuteOperations(filterConfig.getServletContext(), dispatcher);
        // 就是这里,创建了不匹配的url列表
        this.excludedPatterns = init.buildExcludedPatternsList(dispatcher);

        postInit(dispatcher, filterConfig);
    } finally {
        if (dispatcher != null) {
            dispatcher.cleanUpAfterInit();
        }
        init.cleanup();
    }
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-78438-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 王洪果
      王洪果

      你不如直接说人道毁灭好了

    • 庭实
      庭实

      我会对美国说关你鸟事

    • 李辰涵
      李辰涵

      仅从军事角度上讲

    热点图片
    拼命载入中...