search
育知同創大數據培訓內容: Struts2的工作原理

育知同創大數據培訓內容: Struts2的工作原理

上圖來源於Struts2官方站點,是Struts 2 的整體結構。

一個請求在Struts2框架中的處理大概分為以下幾個步驟(可查看源碼:):

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

在上述過程中所有的對象(Action,Results,Interceptors,等)都是通過ObjectFactory來創建的。

Struts開源架構很好的實現了MVC模式,MVC即Model-View-Controller的縮寫,是一種常用的設計模式。MVC 減弱了業務邏輯介面和數據介面之間的耦合,以及讓視圖層更富於變化。MVC的工作原理,如下圖1所示:

StrutsMVC的一種實現,它將ServletJSP標記(屬於J2EE規範)用作實現的一部分。Struts繼承了MVC的各項特性,並根據J2EE的特點,做了相應的變化與擴展。下面是Struts實現MVC的原理。如下圖2所示:

控制:通過圖2大家可以看到有一個XML文件Struts-config.xml,與之相關聯的是Controller, ,它可以稱作為Struts神經中樞。

視圖:主要由JSP生成頁面完成視圖,Struts提供豐富的JSP 標籤庫: Html,Bean,Logic,Template等,這有利於分開在Struts中,承擔MVC中Controller角色的是一個Servlet,叫ActionServlet。ActionServlet是一個通用的控制組件。這個控制組件提供了處理所有發送到Struts的HTTP請求的入口點。它截取和分發這些請求到相應的動作類(這些動作類都是Action類的子類)。另外控制組件也負責用相應的請求參數填充 Action From(通常稱之為FromBean),並傳給動作類(通常稱之為ActionBean)。動作類實現核心商業邏輯,它可以訪問java bean 或調用EJB。最後動作類把控制權傳給後續的JSP 文件,後者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。表現邏輯和程序邏輯。

模型:模型以一個或多個java bean的形式存在。這些bean分為三類:Action Form、Action、JavaBean or EJB。Action Form通常稱之為FormBean,封裝了來自於Client的用戶請求信息,如表單信息。Action通常稱之為ActionBean,獲取從ActionSevlet傳來的FormBean,取出FormBean中的相關信息,並做出相關的處理,一般是調用Java Bean或EJB等。

流程:在Struts中,用戶的請求一般以*.do作為請求服務名,所有的*.do請求均被指向ActionSevlet,ActionSevlet根據Struts-config.xml中的配置信息,將用戶請求封裝成一個指定名稱的FormBean,並將此FormBean傳至指定名稱的ActionBean,由ActionBean完成相應的業務操作,如文件操作,資料庫操作等。每一個*.do均有對應的FormBean名稱和ActionBean名稱,這些在Struts-config.xml中配置。

核心:Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。

熱門推薦

本文由 一點資訊 提供 原文連結

一點資訊
寫了5860316篇文章,獲得23303次喜歡
留言回覆
回覆
精彩推薦