1、结合原理
context其实就是ActionContext数据中心,root是一个栈,遵循先进先出的原则,ValueStack中root的实现,使用的是list:
2、使用Debug标签看值栈中的内容
先在jsp页面导入标签库,然后写入:
<s:debug></s:debug>
然后,先访问一个action,然后转发到该页面(因为ValueStack的周期。。。)
Root:
默认情况下,栈中放放置当前访问的Action对象
Context:
Action中放置了:
3、ognl与接收参数
struts2接受参数其实就是把key-value放入valueStack的root中,利用ognl的赋值方式
如何获得值栈对象,值栈对象与ActionContext对象是互相引用的
通过ActionContext获得ValueStack
ValueStack valueStack = ActionContext.getContext().getValueStack();
4、配置文件中使用ognl
如果struts2中重定向是需要传递参数的时候,可以在result中配置param参数
参数可以是动态的:语法:${ognl表达式}
<action name="confi" class="club.ityuchao.ognlStruts.OgnlConfi" method="execute">
<result name="success" type="redirectAction">
<param name="actionName">debugEle</param>
<param name="namespace">/</param>
<!-- <param name="name">tom</param> -->
<param name="name">${name}</param>
</result>
</action>
5、request中getAttribute方法
struts2重写getAttribute后,该方法查顺序为:
- 原生request域
- valueStack的栈(root)部分
- valueStack的context部分(ActionContext数据中心)