zoukankan      html  css  js  c++  java
  • Apache Struts 2 Documentation Big Picture

    http://struts.apache.org/docs/big-picture.html 

    1. HttpServletRequest 穿越各个过滤器到达FilterDispatcher(这个已经不再使用,现在使用StrutsPrepareAndExecuteFilter)

    2. 执行doFilter方法,如果模式不匹配,则进入下一个过滤链

    3. 如果匹配则创建上下文(为每个请求创建实例,线程安全)

    4. 根据ActionMapping 判断是否应该调用Action

    5. 如果需要调用Action则把控制委派给ActionProxy

     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);
            }
        }
    View Code

    6. 查询配置文件

    7. 创建ActionInvocation ,它与拦截器的关系如下:

     /**
         * Override to handle interception
         */
        public abstract String intercept(ActionInvocation invocation) throws Exception;

    8.调用拦截器栈、action类

    9. action返回结果,有可能渲染jsp等模板,其中会发起额外的请求

    10. 渲染完毕调用拦截器栈

    11. HttpServletResponse通过过滤器

    12. client得到响应

  • 相关阅读:
    一个短信验证码倒计时插件
    记一次图片优化经历
    前端开发中两种常见的图片加载方式
    《javascript面向对象精要》读书笔记
    less hack 兼容
    第一次项目总结
    你总说毕业遥遥无期,可转眼就各奔东西
    【翻译】理念:无冲突的扩展本地DOM原型
    【翻译】jQuery是有害的
    202002280156-《统治世界的10种算法(摘自极客大学堂)》
  • 原文地址:https://www.cnblogs.com/zno2/p/4930867.html
Copyright © 2011-2022 走看看