ValueStack、OGNL和Struts2标签

一、ValueStack

1.ValueStack(值栈): 贯穿整个 Action 的生命周期(每个 Action 类的对象实例都拥有一个 ValueStack对象). 相当于一个数据的中转站. 

在其中保存当前Action 对象和其他相关对象.

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


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

  1. ObjectStack:实际上是CompoundRoot类型,是一个使用ArrayList定义的栈。Struts 把 Action 和相关对象压入 ObjectStack 中。是一个数据结构意义的栈。
  2. ContextMap:实际上是OgnlContext类型,是个Map,也是对 ActionContext 的一个引用。Struts 把各种各样的映射关系(一些 Map 类型的对象) 压入 ContextMap 中。。

Struts 会把下面这些映射压入 ContextMap中

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

       默认情况下,Action对象会被struts2 自动的放到值栈的顶端

二、OGNL

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

若希望访问值栈中ContextMap 中的数据, 需要给 OGNL 表达式加上一个前缀字符#. 

例如<s:property value="#session.user.username">

如果没有前缀字符 #, 搜索将在 ObjectStack 里进行.

例如<s:property value="username">

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值