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...