本文主要是介绍【struts2】(二)值栈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
(一)理解值栈
struts2封装了很多东西,大大的简化了我们的代码。今天我们来看一下struts2是如何存取数据的。
在使用过程中,我们一般在页面发送一个请求去访问action类,这是会自动创建一个值栈。在使用过程中,我们一般在Action类中查出数据,然后返回到页面上。struts中利用值栈来存储这些数据。
在struts2中,把数据放到值栈中,然后再jsp中用ognl表达式取出。所有action共用一个堆栈,当需要保存在action中的数据时,首先从栈顶开始 搜索,若找到相同的属性名(与要获得的数据的属性名相同)时,即将值取出
(二)值栈介绍
简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心。在这里统一管理着数据,供Action、Result、Interceptor等Struts2的其他部分使用,这样一来,数据被集中管理起来而不会凌乱,大大方便了程序编写。
Struts2中关于值栈的另外一个很激动人心的特性就是:大多数情况下,你根本无需关心值栈,你不用管它在哪里,不用管它里面有什么,你只需要去获取自己需要的数据就可以了。也就是说,你可以隐式的使用值栈。
当然,如果编写自定义的Result或拦截器等较复杂功能的时候,还是需要显示访问值栈的,因此,还是需要你掌握值栈的知识。
(三)操作值栈
1.如何获取
要获取ActionContext有两个基本的方法,如果在不能获取到ActionInvocation的地方,可以直接使用ActionContext一个静态的getContext方法,就可以访问到当前的ActionContext了
ActionContext ctx = ActionContext.getContext();
2.获取过后,如何使用
ActionContext主要的功能是用来存放数据的,典型的方法如下:
get(String key):根据key从ActionContext当前的存储空间里面获取相应的值
put(String key, Object value):把值存储在ActionContext的存储空间里面
Map getApplication():返回ServletContext中存储的值
Map getSession():返回HttpSession中存储的值
Map getContextMap():返回当前context存储的值
Map getParameters():返回HttpServletRequest对象里面存储的,客户端提交的参数
ValueStack getValueStack():获取OGNL的值栈
对于getXXX的方法,都有对应的setXXX方法,这里就不去赘述了,具体的请参看Struts2的API文档。
这篇关于【struts2】(二)值栈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!