3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
上圖來源於Struts2官方站點,是Struts 2 的整體結構。一個請求在Struts2框架中的處理大概分為以下幾個步驟(可查看源碼:):1 客戶端初始化一個指向Servlet容器(例如Tomcat)的請求2 這個請求經過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,這個過濾器對於Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin)3 接著FilterDispatcher(現已過時)被調用,FilterDispatcher詢問ActionMapper來決定這個請是否需要調用某個Action4 如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy5 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所示:Struts是MVC的一種實現,它將Servlet和JSP標記(屬於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。

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦