struts2的interceptor一層一層,把action包裹在最裡面。這樣的結構,大概有以下一些特點:
1. 整個結構就如同乙個堆疊,除了action以外,堆疊中的其他元素是interceptor
2. action位於堆疊的底部。由於堆疊「先進後出」的特性,如果我們試圖把action拿出來執行,我們必須首先把位於action上端的interceptor拿出來執行。這樣,整個執行就形成了乙個遞迴呼叫。
3. 每個位於堆疊中的interceptor,除了需要完成它自身的邏輯,還需要完成乙個特殊的執行職責。這個執行職責有3種選擇: 1) 中止整個執行,直接返回乙個字串作為resultcode 2) 通過遞迴呼叫負責呼叫堆疊中下乙個interceptor的執行3) 如果在堆疊內已經不存在任何的interceptor,呼叫 ac tion,struts2的***結構的設計,實際上是乙個典型的責任鏈模式的應用。首先將整個執行劃分成若干相同型別的元素,每個元素具備不同的邏輯責任,並將它們納入到乙個鏈式的資料結構中(我們可以把堆疊結構也看作是乙個遞迴的鏈式結構),而每個元素又有責任負責鏈式結構中下乙個元素的執行呼叫。
這樣的設計,從**重構的角度來看,實際上是將乙個複雜的系統,分而治之,從而使得每個部分的邏輯能夠高度重用並具備高度可擴充套件性。
struts2 值棧的理解
之前工作中當遇到jsp在struts2取值的時候,對於 什麼的使用一直處於不太明白的狀態 雖然之前學習struts2的時候有學到過 今天再次遇到,整理一下。struts2上下文如上圖所示。其中值棧裡的內容我們經常用到的主要就是當前action的屬性值。可以用s debug標籤看到。對於在jsp裡取值...
Struts2 中的值棧的理解
值棧 簡單的說,就是存放action的堆疊,當我們提交乙個請求到伺服器端 action時,就有個堆疊,如果action在伺服器端進行跳轉,所有action共用乙個堆疊,當需要儲存action中的資料時,首先從棧頂開始 搜尋,若找到相同的屬性名 與要獲得的資料的屬性名相同 時,即將對應的值取出,但這種...
Struts2 中的值棧的理解
通過對struts2的一段時間的接觸,將自己對ognl的核心值棧說說,值棧 簡單的說,就是存放action的堆疊,當我們提交乙個請求道伺服器端 action時,就有個堆疊,如果action在伺服器端進行跳轉,所有action共用乙個堆疊,當需要儲存在action中的資料時,首先從棧頂開始 搜尋,若找...