值栈

1.用户在提交一个Action请求后,系统会马上创建两个对象:Action实例和值栈对象(ValueStack),值栈用于存放请求线程运行所需要的数据,其生命周期与请求线程相同,值栈对象包括以下属性:

        Application
        Session
        Request  
        Value stack(root)
        Action
        Parameters
        Attribute

前三个属于Map类型,存储的是application,session,request中属性

Value stack是狭义的值栈,为了和ValueStack区分,我们称为root,是OGNL访问的根

Action是当前action的运行空间

Parameters是请求中的参数

Acttribute在所有的属性范围内获取属性值,依次搜索page Request Session applcation

2.struts2中的ValueStack是一个接口,其实现类为OgnlValueStack,其数据结构类型为arraylist,但是操作方法已经被封装为堆栈的操作模式,顶部取顶部存,用户可以直接访问值栈中的数据(隐式访问),也可显式访问值栈中的数据(拦截器编程时使用)
3.值栈的工作方式,当struts2接收到一个.action请求后

先建立Action的实例对象,但是并不会调用execute方法,而是先将Action类的相应属性放到ValueStack对象的顶层节点,所有的属性值都是默认值

struts2依次调用拦截器链中所有的拦截器

拦截器链中拦截器会截获用户请求参数,并存入值栈

调用Action类的方法,在调用execute方法前,会将ValueStack对象顶层节点中的值赋给Action类中的相应属性
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值