- Java EE程序設計與開發實踐教程
- 馮志林編著
- 620字
- 2021-10-27 17:05:35
6.2.2 Struts2工作原理

第6章任務2
Struts2框架按照模塊來劃分,可以分為Servlet過濾器(Servlet Filters)、Struts核心模塊(Servlet Core)、攔截器(Interceptors)和用戶實現(User Created)部分。Struts2框架如圖6-3所示。

圖6-3 Struts2框架
在圖6-3中,Struts2框架兩個核心部件的功能描述如下:
● FilterDispatcher是控制器的核心,是Struts2實現MVC中控制層的核心。用戶從客戶端提交HttpServletRequest請求將到達FilterDispatcher。
● ActionProxy通過struts.xml詢問框架的配置文件,找到需要調用的Action類。但在調用之前,ActionInvocation會根據配置加載Action相關的所有Interceptor(攔截器)。
Struts2框架的應用著重在控制上,如圖6-4所示。簡單的流程是:頁面→控制器→頁面,最重要的是控制器的取數據與處理后傳數據的問題。

圖6-4 Struts2框架的控制流程
在圖6-4中,FilterDispatcher、Interceptor和Action的功能描述如下:
● FilterDispatcher(核心控制器)是Struts2框架的基礎,包含了框架內部的控制流程和處理機制。FilterDispatcher是由Web應用負責加載的,Struts2的核心控制器被設計成Filter,而不是一個Servlet,負責攔截所有的用戶請求,如果用戶請求以.action結尾,則該請求被轉入Struts2框架處理。通過讀取配置文件struts.xml來確定交給哪個Action繼續處理。FilterDispatcher需在web.xml文件中配置。
● Interceptor(攔截器)是Struts2框架核心,通過攔截器,實現了AOP(Aspect-Oriented Programming,面向切面編程)。使用攔截器動態攔截Action調用的對象,可以簡化Web開發中的某些應用,例如,權限攔截器可以簡化Web應用中的權限檢查。
● Action(業務控制器)是由開發者自己編寫實現的,一般都有一個execute()方法,該方法返回一個字符串,這個字符串是一個邏輯視圖名(如success、error、input等),通過配置后對應一個視圖。用戶在開發Action和業務邏輯組件的同時,還需要編寫相關的配置文件,供核心控制器使用。