[Struts2] 值栈

来源:互联网 发布:gps导航软件下载 编辑:程序博客网 时间:2024/06/05 07:58
  • ValueStack(值栈)

    贯穿整个Action的生命周期,每个Action类的对象实例都拥有一个ValueStack对象,相当于一个数据的中转站,在其中保存当前Action对象和其他相关对象

  • Struts框架把ValueStack对象保存在名为”struts.valueStack”的请求属性中

  • 在ValueStack对象的内部有两个逻辑部分:

    • context:ContextMap(Map栈实际上是OgnlContext类型,是一个Map,也是对ActionContext的一个引用)

    Struts把各种各样的映射关系(一些Map类型的对象)压入ContextMap中,实际上是对ActionContext的一个引用。Struts会把下面这些映射压入到ContextMap中:

    • parameters:该Map中包含当前请求的请求参数
    • request:该Map中包含当前request对象中的所有属性
    • session:该Map中包含当前session对象的所有属性
    • application:该Map中包含当前application对象中的所有属性
    • attr:该Map按如下顺序检索某个属性:request、session、application

    • root:ObjectStack(对象栈,实际上是CompoundRoot类型,是一个使用ArrayList定义的栈,里面保存各种和当前Action实例相关的对象,是一个数据结构意义的栈)

    Struts把Action和相关对象压入ObjectStack中。

  • 在JSP页面上可以使用OGNL(Object-Graph-Navigation-Language:对象-图导航语言)访问到值栈中的对象属性

  • 若希望访问到ContextMap中的数据,需要给OGNL表达式加上一个前缀字符#,如果没有前缀字符,搜索将在ObjectStack里进行

  • 可以从ActionContext中获取值栈对象