值栈

什么是值栈

  • 之前在web阶段 在servlet里面进行操作,把数据放到域对象里面,在页面中使用el表达式获取到,域对象在一定范围内,存值和取值
  • 在struts2里面提供本身一种存储机制,类似于域对象,是值栈(可以存值和取值)
    • 在action里面把数据放到值栈里面,在页面中获取到值栈数据
  • servlet和action区别
    • Servlet:默认在第一次访问时候创建,创建一次,单实例对象
    • Action:访问时候创建,每次访问action时候,都会创建action对象,创建多次,多实例对象
  • 值栈存储位置
    • 每次访问action时候,都会创建action对象
    • 在每个action对象里面都会有一个值栈对象

获取值栈对象

  • 获取值栈对象有多种方式
    • 常用方式:使用ActionContext类里面的方法得到值栈对象
//获取ActionContext类的对象
ActionContext context=ActionContext.getContext();
//调用方法得到值栈对象
ValueStack stack1=context.getValueStack();

注意:每个action对象中只有一个值栈对象(两个ValueStack进行==打印的是true)

值栈内部结构

  • 值栈分为两部分

    • 第一部分 root 结构是list集合(一般操作都是root里面数据)
    • 第二部分 context 结构map集合
  • struts2里面标签 s:debug 使用这个标签可以查看值栈结构和存储值(使用前请导入标签库)

    • 访问action 执行action的方法有返回值 配置返回值到jsp页面中 在jsp页面中使用这个标签
    • 在action没有做任何操作 栈顶元素是 action对象里面有值栈对象 值栈对象里面有action引用
<s:debug></s:debug>

这里写图片描述
点开超链接 可以看到如下结构
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值