值栈

来源:互联网 发布:fastboot刷zip软件 编辑:程序博客网 时间:2024/06/16 13:24

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 0
原创粉丝点击