Struts 2概述 Struts框架四流行廣泛的一個MVC開源實現,而Struts 2是Struts框架的新一代產品,是將Struts 1和WebWork兩種技術進行相容、合併的全新的MVC框架。 Struts 2框架結構 Struts 2的框架結構與Struts 1差別巨大,Struts 2是以 ...
Struts 2概述
Struts框架四流行廣泛的一個MVC開源實現,而Struts 2是Struts框架的新一代產品,是將Struts 1和WebWork兩種技術進行相容、合併的全新的MVC框架。
Struts 2框架結構
Struts 2的框架結構與Struts 1差別巨大,Struts 2是以WebWork為核心,採用攔截器的機制對用戶的請求進行處理。Struts 2的攔截器機制使得用戶的業務邏輯控制器與Servlet API完全分離,業務邏輯控制器更像一個POJO(實體層)。
根據Struts 2框架圖可以大致瞭解其處理流程及步驟:
1、客戶端初始化一個指向Servlet容器(例如Tomcat)的請求;
2、這個請求經過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,這個過濾器對於Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin);
3、接著FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請求是否需要調用某個Action;
4、如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy;
5、ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調用的Action類;
6、ActionProxy創建一個ActionInvocation的實例。
7、ActionInvocation實例使用命名模式來調用,在調用Action的過程前後,涉及到相關攔截器(Intercepter)的調用。
8、一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是(但不總是,也可能是另外的一個Action鏈)一個需要被表示的JSP或者FreeMarker的模版。在表示的過程中可以使用Struts2 框架中繼承的標簽。在這個過程中需要涉及到ActionMapper。
Struts 2控制器
Struts 2控制器組件是其整個框架的核心,實際上,所有MVC框架都是以控制器組件為核心的,如圖:
核心控制器StrutsPrepareAndExecuteFilter是Struts 2框架的核心組件,實際上是一個servlet過濾器,作用於整個web應用程式,需要在web.xml中進行配置,如:
所在的文件地址:
任何的MVC框架需要與web應用整合時都需要藉助web.xml配置文件。通常MVC框架只需要在web應用中載入一個核心控制器即可,對於Struts 2框架而言,就是載入器核心控制器。一個web應用只要載入核心控制器後就具有了Struts 2的基本功能。
因為核心控制器是一個過濾器,所以在web.xml配置文件中使用<filter>及<filter-mapping>元素來配置核心控制器。核心控制器配置好後,當web應用啟動時就會載入該過濾器,併在運行過程中所有的請求都需要經過該過濾器過濾後才能進一步得到處理。
Action
Action是由用戶定義的業務控制器,代碼如下:
Action類中有一個execute()方法,該方法用於業務處理。實際上,Struts 2中起作用的業務控制器並不是用戶定義的Action,而是由Struts 2框架生成的ActionProxy代理,但是該ActionProxy代理是以用戶定義的Action為目標的。在配置一個Action時,必須指定該Action的實現類,並定義該Action的處理結果與視圖資源之間的映射關係。
配置文件
當Struts 2框架生成ActionProxy代理時,需要訪問Struts 2的配置文件,該文件中有用戶定義的Action相關的配置信息。Struts 2的配置文件有以下兩種:
1、Struts.xml配置文件,用於配置Action相關信息;
2、Struts.properties屬性文件,用於配置Struts 2的全局屬性。
Struts.xml配置文件代碼:
創建一個Struts 2項目:
http://www.cnblogs.com/fengxiongZz/p/6498216.html