Struts學習之值棧的理解

2021-09-22 13:13:52 字數 1550 閱讀 3615

頁面乙個請求傳送過來,依次經過一系列***(處理公共部分,如:往資料中心(值棧)填充資料,所處理工作與業務無關),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中的資料時,首先從棧頂開始 搜尋,若找...