www.1862.net > struts2值栈,是什么啊,什么作用啊?

struts2值栈,是什么啊,什么作用啊?

简单的说,就是存放action的堆栈,当我们提交一个请求道服务器端 action时,就有个堆栈,如果action在服务器端进行跳转,所有action共用一个堆栈,当需要保存在action中的数据时,首先从栈顶开始 搜索,若找到相同的属性名(与要获得的数据的属性名相同)时,即将值取出,但这种情况可能出现找到的值不是我们想要的值,那么解决此问题需要用TOP语法 和N语法来进行解决.

通过对struts2的一段时间的接触,将自己对OGNL的核心值栈说说!值栈:简单的说,就是存放action的堆栈,当我们提交一个请求道服务器端 action时,就有个堆栈,如果action在服务器端进行跳转,所有action共用一个堆栈,当需要保存在action中的数据时,首先从栈顶开始 搜索,若找到相同的属性名(与要获得的数据的属性名相同)时,即将值取出,但这种情况可能出现找到的值不是我们想要的值,那么解决此问题需要用TOP语法 和N语法来进行解决.

你可以简单的理解 值栈 就是 当前的Action,所以值栈放的就是Action里面的属性 当 Struts 2接收到一个.action的请求后,会先建立Action类的对象实例,但并不会调用Action方法,而是先将Action类的相应属性放到 值栈(ValueStack对象) 里面在处理完上述工作后,Struts 2就会调用拦截器链中的拦截器,当调用完所有的拦截器后,最后会调用Action类的Action方法,在调用Action方法之前,会将 ValueStack对象顶层节点中的属性值赋给Action类中相应的属性.(每个Action类的对象实例会拥有一个ValueStack对象)

就是一个list,访问一个action就把他放在里面,你就直接可以使用这个action里面的属性,我觉得说白了就是方便你操作呗.你请求是送到了java后台,前台需要展示的数据肯定是从后台来的,这些数据很可能就是在类的成员域里,用了值栈你就可以直接访问这些成员啦

方便数据读取,一般action的内容会放在栈顶,不用加访问修饰符,直接读取就可以了,相当方便

struts2 值栈里包含很多,最主要的是你访问过的Action对象,包含对象里面所有的属性,以及其他相关的属性, 如果你不懂的话可以在Jsp页面上使用这一对标签 <s:debug></s:debug>然后点击进去看就可以了,内容上部分就是值栈里面的东西,当然在使用<s:debug></s:debug> 标签时要导入struts2 的标签<%@taglib uri="/struts-tags" prefix="s"% > 再导入标签库之后通过请求访问Action中的方法之后,再返回页面时<s:debug></s:debug> 这对标签中就可以看到值栈里面的所有内容!

是<s:dubug></s:dubug>,注意导入标签库 哦,是<s:debug></s:debug> 标签库<%@ taglib prefix="s" uri="/struts-tags"%>

简单说是一个数据区域,保存Application范围内的所有数据和Action处理用户请求数据,要用时读取显示给用户

这个网上说法很多,很杂,但是很多都不准确.这个值栈对象ValueStack每次请求都会有一个,他其中持有一个Root对象(也就是CompoundRoot对象,本质是一个List,虽然他有栈的功能,但实际上这个list不是所谓的值栈对象)和一个context对象(本质是一个map).而这个值栈上下文指的就是这个context对象.通过ActionContext来操作其中的内容.

request 的仅在当前请求有效,session 的值是在一次会话中有效,struts2的值栈是就是存入action 的堆栈,针对当前的action 实例

网站地图

All rights reserved Powered by www.1862.net

copyright ©right 2010-2021。
www.1862.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com