【Struts2】值栈

值栈的结构:
这里写图片描述
右边放的是一个个对象。并且里面有一些对象。
Map的操作, put(k,V); Get(k)
Stack的操作是,push(obj) 压栈 ;pop(obj);

结合—————–

一:存数据的过程
上文中,我们说到Struts2 的拦截器。那么在拦截的过程中会先创建值栈,在值栈里面放了一些初始化的数据。例如request,session,application等等。 如果应用过程中想用的话,直接用#就可以getSeeion到。
也会在栈中放入action对象。

同时还会经过其它拦截器。它会继续在值栈中添加信息。比如参数拦截器会继续在值栈中添加参数信息。ModelDriven 拦截器是把model放到栈顶。

实现的时候,也就是在对应的action中去实现ModelDriven接口。例如:

public class RoleAction  extends ActionSupport implements ModelDriven<Role>

其中接口里面只有唯一的一个接口方法。我们实现如下:

private Role model=new Role();
    public Role getModel(){
        return model;
    }

这里写图片描述
然后下一个拦截器是params。封装参数
此时栈里面有这个model对象(id;name) action对象(id;age)
如果当前请求地址是:
Xx.action?id=3&name=ab&age=20&xx=00
注意:该地址中传过了4个参数。id,name,age,xx

那这里的封装参数就是把参数放到对象中,会先放到属性中。从栈顶开始找 , 找到了就不会往下找了。当放Id的时候,会先
到model中的Id,然后就会把这个参数放到对象中。接着开始处理name。最后xx在对象中并没有对应的属性。则不放到栈中,但依然能用#方式取到该值。
二:取数据
此时,相当于数据中心有了数据。接下来就是我们怎么去应用它。

Action中需要通过ActionContext对象,里面有一个getContext,getValueStack
这里写图片描述

然后在JSP中通过OGNL表达式获取。
这里写图片描述

最后,在注意一个取值顺序。
这里写图片描述

这样就是整个值栈的完整过程。需要注意值栈对象的作用范围是一个请求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值