Struts工做原理及其優缺點詳解

1、Struts工做原理java

MVC即Model-View-Controller的縮寫,是一種經常使用的設計模式。MVC 減弱了業務邏輯接口和數據接口之間的耦合,以及讓視圖層更富於變化。MVC的工做原理,以下圖1所示:Struts 是MVC的一種實現,它將 Servlet和JSP 標記(屬於 J2EE 規範)用做實現的一部分。Struts繼承了MVC的各項特性,並根據J2EE的特色,作了相應的變化與擴展。Struts的工做原理。web

視圖:主要由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。學習

2、Struts優缺點測試

優勢:spa

1.開源軟件,能更深刻的瞭解其內部實現機制。線程

2.Taglib標記庫,靈活動用,能大大提升開發效率。

3.頁面導航使系統的脈絡更加清晰。經過一個配置文件,便可把握整個系統各部分之間的聯繫,這對於後期的維護有着莫大的好處。尤爲是當另外一批開發者接手這個項目時,這種優點體現得更加明顯。

4. 提供Exception處理機制 .

5. 數據庫連接池管理

6. Struts 的Action必需是thread-safe方式,它僅僅容許一個實例去處理全部的請求。因此action用到的全部的資源都必需統一同步,這個就引發了線程安全的問題。

缺點:Taglib是Struts的一大優點,但對於初學者而言,卻須要一個持續學習的過程,甚至還會打亂你網頁編寫的習慣,可是,當你習慣了它時,你會以爲它真的很棒。Struts將MVC的Controller一分爲三,在得到結構更加清晰的同時,也增長了系統的複雜度。ActionForms使用不便、沒法進行單元測試(StrutsTestCase只能用於集成)

相關文章
相關標籤/搜索