Struts1與Struts2原理以及區別

2021-08-19 18:53:01 字數 2503 閱讀 8589

mvc是一種軟體設計模式,代表了一種多層的應用程式實現方式,mvc模式將應用程式實現分為三個不同的基本部分。

模型:表示資料和業務處理 

檢視:是使用者看到並與之互動的介面 

控制器:接受使用者的輸入並呼叫模型和檢視去完成使用者的請求。  

首先控制器接受使用者的請求,並決定應該呼叫哪個模型來進行處理,然後模型處理使用者的請求並返回資料,最後控

製器確定用相應的檢視將模型返回的資料呈現給使用者。  

struts1是mvc設計模式的乙個優秀實現。struts定義了通用的controller,通過乙個配置檔案隔離了model和view,以action的概念對用

戶請求做了封裝。  

struts2以webwork優秀的設計思想為核心,吸收了struts框架的部分優點,提供了乙個更加整潔的mvc設計模式實現的web應用程式框

架。 struts2 提供了乙個更加整潔的mvc設計模式設實現的web應用程式框架。  

1、web容器啟動的時候,actionservlet被初始化,載入struts-config.xml配置檔案。 

2、當客戶端瀏覽器發起請求到actionservlet時,actionservlet對請求進行處理。根據請求的路勁和配置資訊找到對應的action和

actionform。

3、在確定將要呼叫的action和對應的actionform後,就講請求中包含的值填充到actionform中。在呼叫action的

4、action呼叫業務邏輯方法,得到返回值,並返回actionforward物件。 

5、控制權重新回到actionservlet,actionservlet根據action返回的actionforward物件**到相應的頁面。 

6、處理結果返回給瀏覽器。

1 客戶端初始化乙個指向servlet容器(例如tomcat)的請求 

2 這個請求經過乙個的過濾器鏈(這些過濾器中有乙個叫做actioncontextcleanup的可選過濾器,這個過濾器對於struts2和其他框架

需要呼叫某個action 

5 actionproxy通過configuration manager(配置管理器)從配置檔案讀取配置資訊,找到需要呼叫的action類 

6 actionproxy建立乙個actioninvocation的例項。 

7 actioninvocation例項(建立時填充所有的物件和資訊)使用命名模式來呼叫,在呼叫action的過程前後,涉及到相關***

(intercepter)的呼叫。 

8 一旦action執行完畢,actioninvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是(但不總是,也可 能是

另外的乙個action鏈)乙個需要被表示的jsp或者freemarker的模版。在表示的過程中可以使用struts2 框架中繼承的標籤。在這個

首先:struts1是通過servlet啟動的。 

一、struts1要求action類繼承乙個抽象基類,而不是介面。 

struts2的action類可以實現乙個action介面,也可以實現其他介面。 

二、sturts1 action是單例模式,執行緒是不安全的。 

struts2 action執行緒是安全的,action為每乙個請求都生成了乙個例項。 

三、sturts1過去依賴serlet api,不容易測試。 

struts2不依賴於容器,允許action脫離容器單獨被測試。 

四、struts1 使用actionform物件捕獲輸入。所有的actionform必須繼承乙個基類。 

struts 2直接使用action屬性作為輸入屬性,消除了對第二個輸入物件的需求。 

五、struts1 整合了jstl,因此使用jstl el。這種el有基本物件圖遍歷,但是對集合和索引屬性的支援很弱。 

struts2可以使用jstl,但是也支援乙個更強大和靈活的表示式語言--"object graph notation language" (ognl). 

六、struts 1使用標準jsp機制把物件繫結到頁面中來訪問。 

struts 2 使用 "valuestack"技術,使taglib能夠訪問值而不需要把你的頁面(view)和物件繫結起來。 

七、struts 1 actionform 屬性通常都是string型別。struts1使用commons-beanutils

進行型別轉換。 

struts2 使用ognl進行型別轉換。提供基本和常用物件的轉換器。 

八、struts 1支援在actionform的validate方法中手動校驗,或者通過commons validator的擴充套件來校驗。 

struts2支援通過validate方法和xwork校驗框架來進行校驗。 

九、struts1支援每乙個模組有單獨的request processors(生命週期),但是模組中的所有action必須共享相同的生命週期。 

struts2支援通過***堆疊(interceptor stacks)為每乙個action建立不同的生命週期。堆疊能夠根據需要和不同的action一起使用。

Struts2與Struts1的區別

struts2其實並不是乙個陌生的web框架,struts2是以webwork的設計思想為核心,吸收了struts1的優點,因此,可以認為struts2是struts1和webwork結合的產物。簡單來說二者的區別是 乙個是stuts1 乙個是stuts2,這是最大的區別,技術方面,stuts1有個...

Struts2與Struts1的區別

struts2其實並不是乙個陌生的web框架,struts2是以webwork的設計思想為核心,吸收了struts1的優點,因此,可以認為struts2是struts1和webwork結合的產物。簡單來說二者的區別是 乙個是stuts1 乙個是stuts2,這是最大的區別,技術方面,stuts1有個...

struts1與struts2的區別

一 struts1要求action類繼承乙個抽象基類,而不是介面。struts2的action類可以實現乙個action介面,也可以實現其他介面。二 sturts1 action是單例模式,執行緒是不安全的。struts2 action執行緒是安全的,action為每乙個請求都生成了乙個例項。三 s...