頁面乙個請求傳送過來,依次經過一系列***(處理公共部分,如:往資料中心(值棧)填充資料,所處理工作與業務無關),action,result。
介紹其中的兩個***:modeldriven、params;
——乙個請求過來,首先建立乙個值棧物件,經過初始化,然後在map和物件棧中放入一些資料:
物件棧中:action物件,…
——初始化完之後,還會經過很多***,其中乙個***modeldriven(封裝model,把model放入物件棧的棧頂),乙個***params(引數封裝,放入引數);
action中實現modeldriven<>,並實現它的方法:
public class roleactionextends actionsupport implements modeldriven;
(2)在jsp中的格式為:%;
(注:只能寫在struts2的自定義標籤的屬性中)
語法:user =findvalue("user");//從棧中獲取user屬性
#user = map.get("user"); //從map中獲取user物件
#user.name=map.get("user").getname();//從map中獲取user物件的name屬性
(findvalue(expr))的查詢順序:
(1)從物件棧中查詢指定名稱的屬性,從棧頂開始向下找,找到後就返回;
(2)如果從物件棧中沒有找到屬性,則從map中查詢對應的key值,找到後就返回。
例子:
通過此篇部落格,我們需要了解什麼?
(1)頁面乙個請求過來,struts2中依次經過了哪幾個過程?
—— 一系列***——>action——>request;
——modeldriven和params***分別的主要作用;
(2)值棧的概念?
——值棧的結構:物件棧、map;
——物件棧、map分別存放什麼資料;
(3)(1)和(2)是如何結合在一起的?
——請求過來,一開始經過***,初始化並建立物件棧,經過modeldriven和params***時,分別往值棧中封裝物件和封裝引數,分別封裝到相應的地方,此時資料中心中有就有了資料。
以上均是***為我們做的工作,我們只需寫action(通過actioncontext()操作map,操作物件棧)和jsp(通過ognl表示式獲取棧中資料)即可。
struts2 值棧的理解
之前工作中當遇到jsp在struts2取值的時候,對於 什麼的使用一直處於不太明白的狀態 雖然之前學習struts2的時候有學到過 今天再次遇到,整理一下。struts2上下文如上圖所示。其中值棧裡的內容我們經常用到的主要就是當前action的屬性值。可以用s debug標籤看到。對於在jsp裡取值...
Struts2 中的值棧的理解
值棧 簡單的說,就是存放action的堆疊,當我們提交乙個請求到伺服器端 action時,就有個堆疊,如果action在伺服器端進行跳轉,所有action共用乙個堆疊,當需要儲存action中的資料時,首先從棧頂開始 搜尋,若找到相同的屬性名 與要獲得的資料的屬性名相同 時,即將對應的值取出,但這種...
Struts2 中的值棧的理解
通過對struts2的一段時間的接觸,將自己對ognl的核心值棧說說,值棧 簡單的說,就是存放action的堆疊,當我們提交乙個請求道伺服器端 action時,就有個堆疊,如果action在伺服器端進行跳轉,所有action共用乙個堆疊,當需要儲存在action中的資料時,首先從棧頂開始 搜尋,若找...