• Struts2_day01--导入源文件_Struts2的执行过程_查看源代码


    导入源文件

    选中按ctrl + shift + t进入

    Struts2执行过程

    画图分析过程

     过滤器在服务器启动时创建,servlet在第一次访问时创建

    查看源代码

    public class StrutsPrepareAndExecuteFilter implements StrutsStatics, Filter {
        protected PrepareOperations prepare;
        protected ExecuteOperations execute;
        protected List<Pattern> excludedPatterns = null;
        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(dispatcher);
                execute = new ExecuteOperations(dispatcher);
                this.excludedPatterns = init.buildExcludedPatternsList(dispatcher);
    
                postInit(dispatcher, filterConfig);
            } finally {
                if (dispatcher != null) {
                    dispatcher.cleanUpAfterInit();
                }
                init.cleanup();
            }
        }
        /**
         * Callback for post initialization
         */
        protected void postInit(Dispatcher dispatcher, FilterConfig filterConfig) {
        }
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) res;
            try {
                if (excludedPatterns != null && prepare.isUrlExcluded(request, excludedPatterns)) {
                    chain.doFilter(request, response);
                } else {
                    prepare.setEncodingAndLocale(request, response);
                    prepare.createActionContext(request, response);
                    prepare.assignDispatcherToThread();
                    request = prepare.wrapRequest(request);
                    ActionMapping mapping = prepare.findActionMapping(request, response, true);
                    if (mapping == null) {
                        boolean handled = execute.executeStaticResourceRequest(request, response);
                        if (!handled) {
                            chain.doFilter(request, response);
                        }
                    } else {
                        execute.executeAction(request, response, mapping);
                    }
                }
            } finally {
                prepare.cleanupRequest(request);
            }
        }
        public void destroy() {
            prepare.cleanupDispatcher();
        }
    }


    1 过滤器在服务器启动时候创建,创建过滤器时候执行init方法

    (1)在init方法中主要加载配置文件

    - 包含自己创建的配置文件和struts2自带配置文件

    ** struts.xml

    ** web.xml

  • 相关阅读:
    面向对象程序设计课第五次作业
    面向对象程序设计课第三次作业
    MeasureSpec 解析
    JavaWeb学习总结(一)JavaWeb入门与Tomcat
    Redis GetTypedClient
    Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询
    EF 连接MySQL 数据库  保存中文数据后乱码问题
    VS2015 +EF6 连接MYSQL数据库生成实体
    WebConfig 自定义节点configSections配置信息
    docker菜鸟入门
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7867770.html
Copyright © 2020-2023  润新知