OGNL
和以前學的jstl差不多
- 之前web階段,學習過EL表達式,EL表達式在jsp中擷取域對象裡面的值
-
OGNL是一種表達式,這個表達式功能更加強大
(1)在struts2裡面操作值棧資料
(2)一般把ognl在struts2操作:和struts2标簽一起使用操作值棧
- OGNL不是struts2的一部分,單獨的項目,經常和struts2一起使用(使用ognl時候首先導入jar包,struts2提供jar包)
執行個體
例:使用ognl+struts2标簽實作計算字元串長度
- 在java代碼中,調用字元串.length();
-
使用struts2标簽實作
(1)使用jstl時候,導入jar包之外,在jsp頁面中引入标簽庫–使用struts2标簽時候,在jsp中引入标簽庫
(2)使用struts2标簽實作操作<%@ taglib uri="/struts-tags" prefix="s" %>
Struts2架構學習筆記——03
值棧
- 之前在web階段,在servlet裡面進行操作,把資料放到域對象裡面,在頁面中使用el表達式擷取到,域對象在一定範圍内,存值和取值
- 在struts2裡面提供本身一種存儲機制,類似于域對象,是值棧,可以存值和取值---- 在action裡面把資料放到值棧裡面,在頁面中擷取到值棧資料
-
servlet和action差別
(1)Servlet:預設在第一次通路時候建立,建立一次,單執行個體對象
(2)Action:通路時候建立,每次通路action時候,都會建立action對象,建立多次,多執行個體對象
-
值棧存儲位置
(1)每次通路action時候,都會建立action對象
(2)在每個action對象裡面都會有一個值棧對象(隻有一個)
Struts2架構學習筆記——03
擷取值棧對象
常用方式:使用ActionContext類裡面的方法得到值棧對象
每個action對象中隻有一個值棧對象
向值棧放資料
第一種 擷取值棧對象,調用值棧對象裡面的 set 方法
第二種 擷取值棧對象,調用值棧對象裡面的 push方法
第三種 在action定義變量,生成變量的get方法
向值棧放對象
第一步 定義對象變量
第二步 生成變量的get方法
第三步 在執行的方法裡面向對象中設定值
向值棧放list集合
第一步 定義list集合變量
第二步 生成變量的get方法
第三步 在執行的方法裡面向list集合設定值
== 從值棧擷取資料==
使用struts2的标簽+ognl表達式擷取值棧資料
擷取字元串
向值棧放字元串
在jsp使用struts2标簽+ognl表達式擷取
擷取對象
向值棧放對象
在頁面中擷取值
<s:property value=”user.username”/>
<s:property value=”user.password”/>
<s:property value=”user.address”/>
擷取list集合
重點掌握一種
EL表達式擷取值棧資料(不會ognl時可以使用,效率低)
- EL表達式擷取域對象值
- 向域對象裡面放值使用setAttribute方法,擷取值使用getAttribute方法
-
底層增強request對象裡面的方法getAttribute方法
(1)首先從request域擷取值,如果擷取到,直接傳回
(2)如果從request域擷取不到值,到值棧中把值擷取出來,把值放到域對象裡面