Struts2簡介
Struts 2框架作為Struts 1.X框架的替代技術,相對Struts 1.X來說,有著本質上的改變, Struts 2框架是從WebWork框架發展而來的.Apache Struts 2即是大家之前所熟悉的webwork2.隨著各自的發展,webwork和Struts社區決定將二者合並為Struts2,新版本的Struts與以前版本一樣更易於使用。從某種程度上來講,Struts2沒有繼承Struts1的血統,而是繼承了webwork的血統並且吸收了Struts1和webwork兩者的優勢,所以說Struts2並不是一個全新的框架。
mvc設計模式
談到Struts就不得不談談mvc設計模式。mvc設計模式是一種目前廣泛應用的軟件設計模式。隨著網絡應用的快速發展,應用變得越來越復雜,mvc設計模式為應用模型提供了最基本的分析方法,為構造產品提供了清晰的設計框架,為軟件工程提供規范的依據。
mvc設計模式將應用程序劃分為模型層、視圖層、控制器。
模型層包括業務邏輯和數據訪問層,在整個mvc模型中Model部分就是業務流程或狀態的處理以及業務規則的制定,可以說是mvc中最重要的部分。
視圖,一個web項目中可能有很多不同的視圖,mvc設計模式對於視圖的處理僅限於視圖上數據的采集和處理以及響應用戶的請求,而不包括在視圖上的業務流程的處理。
控制器,控制器在視圖層與業務邏輯層之間起到了橋梁作用,控制了兩者之間的數據流向。當用戶請求從V部分傳到控制器時,控制器調用相應的模型層在控制器中進行處理。控制器再將處理結果轉發給適當的視圖層,循環進行此過程。
mvc工作流程:
1.用戶的請求提交給控制器
2.控制器受到用戶請求後根據用戶的具體需求,調用相應的模型(javabean或者EJB)來處理用戶請求。
3.控制器調用模型層進行數據處理後,根據處理結果進行下一步的跳轉,如跳轉到另一個視圖或其他控制層。
struts2工作原理
Struts2是基於mvc設計模式的java web框架技術之一,Struts2框架按照mvc的設計思想把java web 應用程序分為:控制層(核心控制器和業務控制器)、模型層(業務邏輯組件和數據庫訪問組件)、視圖層(包括HTML、JSP、Struts2的表簽)。
1.客戶提交請求道服務器
2.請求被提交到一系列的過濾器或者攔截器,最後到達FilterDispather
3.FilterDispather讀取配置文件struts.xml,根據配置信息調用某個Action來處理客戶請求。
4.Action處理後,返回結果,FilterDispather根據struts.xml的配置找到對應的頁面跳轉。
核心控制器
Struts2的成功因素之一在於核心控制器FilterDispather,該控制器作為一個過濾器運行在java web項目中,負責攔截所有用戶請求,當用戶請求到達時,該過濾請求會過濾用戶請求。FilterDispather負責四個方面的功能:
(1)執行Actions
(2)清除ActionContext
(3)維護靜態內容
(4)清除request生命周期內的XWork的interceptors
業務控制器
Struts2的成功的另一個因素在於Action業務邏輯控制器。開發基於Struts2的java web 應用項目時,Action是數據處理的核心,需要編寫大量的Action類,並在struts.xml文件中配置Action。Action類中包含了對用戶請求的處理邏輯,因此也把Action稱為Action業務控制器。它是用戶請求和業務邏輯之間的橋梁,每個Action充當客戶的業務代理。
總結
Struts2緊緊圍繞兩大核心控制器,做到了根據請求的參數轉發請求給適當的控制器、在控制器中調用業務接口、將業務接口返回的結果包裝起來發送給指定的視圖,並由視圖完成處理結果的展現,使得開發模塊化、降低耦合、更易於擴展。當然Struts2的一些細節好處就更不用說了,例如獲取表單內容,並組織生成參數對象、易於擴展的插件機制。