首先要說的是,mvc是一種架構模式,它是一種思想,而不是一種架構,但是struts2是一種架構,它運用的是mvc思想。。
以下是struts2和mvc的一一對應關係:
核心控制器:FilterDispatcher
FilterDispatcher是Struts2架構的核心控制器,該控制器作為一個Filter運行在Web應用中,它負責攔截所有使用者請求,當使用者請求到達時,該Filter會過濾使用者請求。如果使用者請求以.action結尾,該請求將被轉入Struts2架構處理。
業務控制器組件:使用者Action
業務控制器組件就是使用者實現Action類的執行個體,Action類裡通常包含了一個execute方法,該方法返回一個字串--該字串就是一個邏輯視圖名,每個字串對應一個視圖名。
每個Action都要處理一個使用者請求,而使用者請求總是包含了指定URL。當FilterDispatcher攔截到使用者請求後,根據請求的URL和Action處理URL之間的對應關係來處理轉寄。
模型組件
模型組件已經超出了MVC架構的覆蓋範圍。對於Struts2架構而言,通常沒有為模型組件的實現提供太多的協助。
J2EE應用裡的模型組件,通常指系統的商務邏輯組件以及隱藏其下的DAO、領域對象等組件。
通常,MVC架構裡的業務控制器會調用模型組件的方法來處理使用者請求。也就是說,商務邏輯控制器不會對使用者請求進行任何實際處理,使用者請求最終由模型組件負責處理。業務控制器只是是間負責調度的調試器,這也是稱Action為控制器的原因。
視圖組件
Struts2允許使用其他的模板技術,如FreeMarker、Velocity作為視圖技術。當Struts2的控制器返回邏輯視圖名時,邏輯視圖並未與任何的視圖技術關聯,僅僅是返回一個字串,該字元器作為邏輯視圖名。
當在struts.xml檔案中配置Action時,不僅需要指定Action的name屬性和class屬性,還要為Action元素指定系列result了元素,每個result子項目定義一個邏輯視圖和物理視圖之間的映射。當沒有在result子項目中指定type屬性時,預設使用JSP作為視圖資源
原文來自於:<a href="http://bbs.csdn.net/topics/310168215"/>