天天看點

Struts2架構學習筆記——03

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中引入标簽庫

    <%@ taglib uri="/struts-tags" prefix="s" %>

    (2)使用struts2标簽實作操作
    Struts2架構學習筆記——03

值棧

  • 之前在web階段,在servlet裡面進行操作,把資料放到域對象裡面,在頁面中使用el表達式擷取到,域對象在一定範圍内,存值和取值
  • 在struts2裡面提供本身一種存儲機制,類似于域對象,是值棧,可以存值和取值---- 在action裡面把資料放到值棧裡面,在頁面中擷取到值棧資料
  • servlet和action差別

    (1)Servlet:預設在第一次通路時候建立,建立一次,單執行個體對象

    (2)Action:通路時候建立,每次通路action時候,都會建立action對象,建立多次,多執行個體對象

  • 值棧存儲位置

    (1)每次通路action時候,都會建立action對象

    (2)在每個action對象裡面都會有一個值棧對象(隻有一個)

    Struts2架構學習筆記——03

擷取值棧對象

常用方式:使用ActionContext類裡面的方法得到值棧對象

Struts2架構學習筆記——03

每個action對象中隻有一個值棧對象

Struts2架構學習筆記——03

向值棧放資料

第一種 擷取值棧對象,調用值棧對象裡面的 set 方法

Struts2架構學習筆記——03

第二種 擷取值棧對象,調用值棧對象裡面的 push方法

Struts2架構學習筆記——03

第三種 在action定義變量,生成變量的get方法

向值棧放對象

第一步 定義對象變量

第二步 生成變量的get方法

第三步 在執行的方法裡面向對象中設定值

Struts2架構學習筆記——03

向值棧放list集合

第一步 定義list集合變量

第二步 生成變量的get方法

第三步 在執行的方法裡面向list集合設定值

Struts2架構學習筆記——03

== 從值棧擷取資料==

使用struts2的标簽+ognl表達式擷取值棧資料

擷取字元串

向值棧放字元串

Struts2架構學習筆記——03

在jsp使用struts2标簽+ognl表達式擷取

擷取對象

向值棧放對象

Struts2架構學習筆記——03

在頁面中擷取值

<s:property value=”user.username”/>
<s:property value=”user.password”/>
<s:property value=”user.address”/>
           

擷取list集合

重點掌握一種

Struts2架構學習筆記——03

EL表達式擷取值棧資料(不會ognl時可以使用,效率低)

  • EL表達式擷取域對象值
  • 向域對象裡面放值使用setAttribute方法,擷取值使用getAttribute方法
  • 底層增強request對象裡面的方法getAttribute方法

    (1)首先從request域擷取值,如果擷取到,直接傳回

    (2)如果從request域擷取不到值,到值棧中把值擷取出來,把值放到域對象裡面