深入理解struts2中的值栈
1.什么是值栈
(1)之前web阶段
在servlet里进行操作,把数据放到域对象中,然后在页面中使用el表达式获取到。域对象就是在一定范围内来存执和取值(属性作用范围)
(2)在struts2中
提供本身的一种存储机制(此前用servlet的对象),类似于域对象,叫做值栈。是可以存值和取值的
在action中把数据放到值栈中,然后在页面中获取到值栈数据
(3)servlet和action的区别
·servlet:默认在第一次访问时创建,创建一次,单实例对象
·action:访问时创建,每次访问action时都会创建一个action对象(执行构造方法),访问多次创建多次。是多实例对象
(4)值栈存储位置
·每次访问action时候,都会创建对象
·在每个action对象中都会有一个值栈对象(只有一个)
2.获取值栈对象
(1)获取值栈对象的多种方式
·常用方式:使用ActionContext类中的方法得到值栈对象
·每个action对象中只有一个值栈对象
结果为:true
(2)关于栈的理解(后进先出)
3.值栈的内部结构
(1)值栈分为两部分
第一部分:root,结构是list集合
一般操作的都是root里的数据
第二部分:context,结构map集合
(2)struts2里的标签s:debug,使用这个标签可以查看值栈结构和存储值
·访问action,执行action的方法有返回值,配置返回值到jsp页面中。我们是在jsp页面中使用这个标签来查看信息
点击超链接看到结构
·在action没有做任何操作时,栈顶元素是
-action对象里面有值栈对象
-值栈对象里面有action引用
以上是个人学习笔记。
增加别人对值栈的理解的连接,以便日后查看:来自简书:来自简书的对值栈的深入浅出的理解