[Struts2] 值栈

  • 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中获取值栈对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值