一、ValueStack(值栈)
1、是ActionContext中的一个对象,值栈是栈结构(FILO:先进后出);
Struts2中值栈存放的数据是Action对象
注意:Action对象可以ValueStack,我们可以对象值栈进行操作,但是建议不是很熟就不要去操作了
二、ognl(对象图形导航语言)表达式 也就是一个第三方的插件
学过的表达式--el表达式-等---用简洁的表达式完成比较复杂的功能
1、能够访问对象的普通方法
2、能够访问类的静态属性和静态方法
3、强大的操作几个类对象的能力
4、支持赋值操作和表达式串联
5、访问OGNL上下文的ActionContext(一般都使用这个)
Struts2中使用该表达式是通过Struts2的标签来取的
需要的包
<!-- Struts2中的ognl表达式包 -->
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>3.1.4</version>
</dependency>
在jsp页面中如下引入标签库
<%@ taglib prefix="s" uri="/struts-tags" %>
在页面中使用可以直接<s:property value="action中的属性名"/>
或者是<s:property value="#session.user"中的属性名"/>
这就是在学习记录1中的那个大数据(大范围的数据)及ActionContext中的前五大对象
(
ActionContext包含6大对象:
1,Application
2,request
3,session
4,attr(page->request->sesssion->application)括号中是取值顺序
5,parameters
6,ValueStack(值栈)
)然后不加#号取值的话就是取值栈中的数据
注意:要使用struts2的标签,那么要通过struts2过滤器来启用,如果过滤器的配置为 *.action的时候不能直接访问jsp页面,需要action跳转
如果直接访问/*是可以直接访问jsp页面,
Struts推荐不能直接访问jsp页面,推荐使用action来控制
结论:使用ognl表达式访问action属性时,可以直接访问,访问ActionContext中的数据的时候需要加上#