您的位置:首页 > 编程语言 > Java开发

深入理解struts2中的值栈

2017-08-03 23:13 253 查看

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引用

以上是个人学习笔记。
增加别人对值栈的理解的连接,以便日后查看:来自简书:来自简书的对值栈的深入浅出的理解 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2 值栈 ValueStack