一、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中的數據的時候需要加上#