`
liujiawinds
  • 浏览: 137673 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

ValueStack,stackContext,ActionContext.之间的关系

 
阅读更多

 

三者之间的关系如下图所示:

Struts2框架把OGNL Context设置为我们的ActionContext。并且ValueStack作为OGNL的根对象。除ValueStack之外,Struts2框架还把代表applicationsessionrequest这些对象的Map对象也放到ActionContext中去。(这也就是Struts2建议在Action类中不要直接访问Servlet API的原因,他可以通过ActionContext对象来部分代替这些(Servlet API)功能,以方便对Action类进行测试!)

Struts2中,采用标准命名的上下文(Context)来处理OGNL表达式。处理OGNL的顶级对象是一个Map(也叫context map),而OGNL在这个context中就是一个顶级对象(root)。在用法上,顶级对象的属性访问,是不需要任何标记前缀的。而其它非顶级的对象访问,需要使用#标记。

 Action的实例,总是放到ValueStack中。因为Action放在Value Stack中,而ValueStackroot(根对象),所以对Action中的属性的访问就可以省略#标记。但是,要访问ActionContext中其它对象的属性,就必须要带上#标记,以便让OGNL知道,不是从根对象,而是从其它对象中去寻找。

分享到:
评论

相关推荐

    JavaEE ActionContext存取数据示例

    ActionContext context = ActionContext.getContext(); ValueStack stack = context.getValueStack(); User user = new User("John", 30); stack.push(user); // 通过OGNL访问并修改User对象的属性 Map, ...

    struts2框架面试题及答案02

    1. **通过ActionContext**: `ValueStack valueStack = ActionContext.getContext().getValueStack();` 2. **通过ServletActionContext**: `ValueStack valueStack = ServletActionContext.getValueStack...

    Struts2框架基础 二

    ValueStack stack = ActionContext.getContext().getValueStack(); // 将对象压入栈顶 stack.push(new User("John", "Doe")); ``` - **取出数据**: ```java // 从栈顶取出对象 User user = (User) stack....

    详解Java的Struts框架中栈值和OGNL的使用

    ValueStack stack = ActionContext.getContext().getValueStack(); Map, Object> context = new HashMap(); context.put("key1", "This is key1"); context.put("key2", "This is key2"); stack.push(context);...

    ognl表达式 ognl表达式

    ActionContext context = ActionContext.getContext_r(); Object attribute = super.getAttribute_r(name); // 尝试从request范围内获取值 if (context != null && attribute == null) { // 如果request范围内...

    Struts2在Action中获得Response对象的四种方法

    ActionContext context = ActionContext.getContext(); HttpServletResponse response = (HttpServletResponse) context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"); // 使用 response 对象...

    精讲Struts2

    精简全面讲解Struts 2.0Struts2产生背景 工作原理 实现步骤 标签 命名空间 转换器 国际化 输出 令牌机制 拦截器 表单校验(jQuery.validate验证框架) ...OGNL(ActionContext StackContext ValueStack区别)

    马士兵Struts2笔记2013

    Stack Context是ValueStack的一部分,它包含了一些上下文相关的数据,如ActionContext,提供了对请求、响应、session、应用上下文的访问。 11. **Action总结** Action是Struts2的主要业务逻辑载体,它负责处理...

    struts2自定义编写转换类

    默认情况下,Struts2通过Action上下文(ActionContext)的ValueStack来查找对应的转换器。如果找不到内置的转换器,我们就可以提供自定义的转换器。 自定义转换类需要继承Struts2提供的`org.apache.struts2.util....

    Struts2源码分析之ParametersInterceptor拦截器

    获取到参数后,拦截器会创建一个Map对象(contextMap)来保存ActionContext中的context Map,即OgnlContext对象,然后通过ac.getValueStack()获取ValueStack。ValueStack是OGNL(Object-Graph Navigation Language)...

Global site tag (gtag.js) - Google Analytics