zoukankan      html  css  js  c++  java
  • 深入struts2.0(六)--ActionProxy类

    1.1     ActionProxy接口以及实现

    ActionProxy在struts框架中发挥着很关键的数据。

    通过webwork和xwork交互关系图能够看出。它是action和xwork中间的一层。 正由于ActionProxy的存在导致Action调用更加简洁。

    接下来我们一起研究下这个核心类。

    1.1.1       ActionProxy接口方法


    图 3.3.1 ActionProxy接口主要方法图

    ActionConfig getConfig();该方法主要是获得创建ActionProxy类的action配置信息。getExecuteResult()方法就是推断运行后action后是否运行result. getInvocation()获得与ActionProxy相关联的ActionInvocation.

    1.1.2       ActionProxy接口实现类


    图 3.3.2 ActionProxy接口实现类图

    依据命名就知道defaultActionProxy是默认的actionProxy代理。

    对于MockActionProxy这个类笔者也不太明确。这个类在struts代码中也没实用。在API中也没有说明,依据字面意思。就是对ActionProxy一个简单实现。

    1.1.3       DefaultActionProxy实现类

    在dispatcher类中我们能够看到例如以下代码:

    proxy.execute();

       

     表示将由ActionProxy代理类来运行action,全部action的主要运行方法就是actionProxy中的execute.

        public String execute() throws Exception {

            ActionContext nestedContext = ActionContext.getContext();

            ActionContext.setContext(invocation.getInvocationContext());

     

            String retCode = null;

     

            String profileKey = "execute: ";

            try {

                UtilTimerStack.push(profileKey);

     

                retCode = invocation.invoke();

            } finally {

                if (cleanupContext) {

                    ActionContext.setContext(nestedContext);

                }

                UtilTimerStack.pop(profileKey);

            }

     

            return retCode;

        }

     

    图 3.3.3 ActionProxy接口execute方法

    首先把InvocationContext设置到ActionContext上下文中。然后调用InvocationContext中的invoke方法运行。

查看全文
  • 相关阅读:
    maven/gradle 打包后自动上传到nexus仓库
    idea中怎么忽略(ignore)掉 .idea等文件
    MySQL优化一例
    微信调用照相拍照等 js 接口的权限配置 和 照片上传和下载实现
    {"errcode":40097,"errmsg":"invalid args hint: [vjNe7xxxxxx8vr19]"}——记录一次微信错误处理
    jsmooth compilation failed error null
    java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。
    IE8 ajax缓存问题
    com.sun.xml.internal.ws.server.ServerRtException: Server Runtime Error: java.net.BindException: Cannot assign requested address: bind
    chrome 浏览器的预提取资源机制导致的一个请求发送两次的问题以及ClientAbortException异常
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10679043.html
  • Copyright © 2011-2022 走看看