一直以來我們都說Struts是一個Web Framework。那么讓我么先來看看什么是Framework。
Framework概念并不是很新了,伴隨著軟件開發的發展,在多層的軟件開發項目中,可重用、易擴展的,而且是經過良好測試的軟件組件,越來越為人們所青睞。這意味著人們可以將充裕的時間用來分析、構建業務邏輯的應用上,而非繁雜的代碼工程。于是人們將相同類型問題的解決途徑進行抽象,抽取成一個應用框架。這也就是我們所說的Framework。
Framework的體系提供了一套明確機制,從而讓開發人員很容易的擴展和控制整個Framework開發上的結構。 通常,Framework的結構中都有一個“命令和控制”組件("command and control" component)——Framework Factory and Manager。
Framework體系
通過基于請求響應(Request-Response)模式的應用Framework,基本上有如下幾個表現邏輯結構組成。
控制器(Controller)——控制整個Framework中各個組件的協調工作。
業務邏輯層(Business Logic)——對Framwork本身來說,這里僅僅只是概念和幾個提夠服務的基礎組件,真正的實現與客戶的業務邏輯接軌,還需要開發人員在Framework上再次擴展。
數據邏輯層(Data Logic)——絕大應用系統都需要涉及到數據交互,這一層次主要包括了數據邏輯和數據訪問接口。對于數據邏輯來說,如果你了解數據建模(Data Modeling)可能就很容易理解。
Struts有一組相互協作的類、Serlvet以及Jsp TagLib組成。基于Struts構架的web應用程序基本上符合JSP Model2的設計標準,可以說是MVC設計模式的一種變化類型。根據上面對framework的描述,我們很容易理解為什么說Struts是一個web framwork,而不僅僅是一些標記庫的組合。但 Struts 也包含了豐富的標記庫和獨立于該框架工作的實用程序類。
Struts有其自己的控制器(Controller),同時整合了其他的一些技術去實現模型層(Model)和視圖層(View)。在模型層,Struts可以很容易的與數據訪問技術相結合,包括EJB,JDBC和Object Relation Bridge。在視圖層,Struts能夠與JSP, Velocity Templates,XSL等等這些表示層組件想結合。
Struts的與Web App的關系
既然struts叫做web framework,那么其肯定主要基于web層的應用系統開發。按照J2EE Architecture的標準,struts應當和jsp/servlet一樣,存在于web container一層。