欢迎光临
我们一直在努力

Struts2值栈内部结构详解

通过教程《值栈是什么》的学习,读者对值栈的知识已经有了一定的了解。为了让初学者更好地理解值栈,本节将讲解值栈的内部结构。

ValueStack 对象的内部有两个逻辑部分。

  • ObjectStack(对象栈):是 CompoundRoot 类型,用 ArrayList 定义,Struts2 把动作和相关对象压入 ObjectStack 中。
  • ContextMap(Map 栈):是 OgnlContext 类型,是一个 Map 集合,Struts2 把各种各样的映射关系(一些 Map 类型的对象)压入 ContextMap 中。

了解了 ValueStack 对象的内部组成后,下面通过运行项目查看 ValueStack 中的信息。

首先,在 struts2Demo05 项目的 com.mengma.ognl 包中新创建一个名称为 ValueStackAction 的类,并在类中编写一个获取 ValueStack 对象的方法,如下所示。

package com.mengma.ognl;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.ValueStack;

public class ValueStackAction extends ActionSupport {
    public String execute() throws Exception {
        // 通过ActionContext获取valueStack对象
        ValueStack valueStack = ActionContext.getContext().getValueStack();
        System.out.println(valueStack);
        return SUCCESS;
    }
}

然后,将新建的 Action 信息添加到 struts.xml 中,所添加的代码如下所示:

<action name="valueStack" class="com.mengma.ognl.ValueStackAction">
    <result name="success">index.jsp</result>
</action>

最后,在 ValueStackAction 类中的第 11 行处设置断点,以 Debug 模式启动项目。在浏览器的地址栏中输入地址 http://localhost:8080/struts2Demo05/valueStack.action后,MyEclipse 会进入 Debug 模式。从 Variables 窗口中可以看到 valueStack 的结构信息,如图 1 所示。

valueStack结构
图 1  valueStack结构

赞(0) 打赏
未经允许不得转载:hosteons中文网 » Struts2值栈内部结构详解

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册