Structs工作原理

來源:互聯網
上載者:User

                                                               Struts 的體繫結構與工作原理
  
   MVC 即 Model-View-Controller 的縮寫,是一種常用的設計模式。 MVC 減弱了商務邏輯介面和資料介面之間的耦合,以及讓視圖層更富於變化。 MVC 的工作原理 , 如-1 所示:
                                                                                                   圖-1
  
   Struts 是 MVC 的一種實現,它將 Servlet 和 JSP 標記(屬於 J2EE 規範)用作實現的一部分。 Struts 繼承了 MVC 的各項特性,並根據 J2EE 的特點,做了相應的變化與擴充。 Struts 的體繫結構與工作原理如 2 所示:
                                                                                     圖-2  
  圖-2 中我們可以知道, Struts 的體繫結構包括模型( Model ),視圖( View )和控制器( Controller )三部分。
  
  下面讓我們從 MVC 角度來看看 struts 的體繫結構( Model 2 )與工作原理:
  
   1 )模型( Model )
  
  在 Struts 的體繫結構中,模型分為兩個部分:系統的內部狀態和可以改變狀態的操作(事務邏輯)。內部狀態通常由一組 Actinform Bean 表示。根據設計或應用程式複雜度的不同,這些 Bean 可以是自包含的並具有持續的狀態,或只在需要時才獲得資料(從某個資料庫)。大型應用程式通常在方法內部封裝事務邏輯(操作),這些方法可以被擁有狀態資訊的 bean 調用。比如購物車 bean ,它擁有使用者購買商品的資訊,可能還有 checkOut() 方法用來檢查使用者的信用卡,並向倉庫發定貨資訊。 小型程式中,操作可能會被內嵌在 Action 類,它是 struts 架構中控制器角色的一部分。當邏輯簡單時這個方法很適合。 建議使用者將事務邏輯(要做什麼)與 Action 類所扮演的角色(決定做什麼)分開。
  
   2 )視圖( View )
  
  視圖主要由 JSP 建立, struts 包含擴充自訂標籤庫( TagLib ),可以簡化建立完全國際化使用者介面的過程。目前的標籤庫包括: Bean Tags 、 HTML tags 、 Logic Tags 、 Nested Tags 以及 Template Tags 等。
  
   3 )控制器( Controller )
  
  在 struts 中,基本的控制器組件是 ActionServlet 類中的執行個體 servelt ,實際使用的 servlet 在設定檔中由一組映射(由 ActionMapping 類進行描述)進行定義。對於商務邏輯的操作則主要由 Action 、 ActionMapping 、 ActionForward 這幾個組件協調完成的,其中 Action 扮演了真正的商務邏輯的實現者, ActionMapping 與 ActionForward 則指定了不同商務邏輯或流程的運行方向。 struts-config.xml 檔案配置控制器。 
       流程:在Struts中,使用者的請求一般以*.do作為請求服務名,所有的*.do請求均被指向ActionSevlet,ActionSevlet根據Struts-config.xml中的配置資訊,將使用者請求封裝成一個指定名稱的FormBean,並將此FormBean傳至指定名稱的ActionBean,由ActionBean完成相應的業務操作,如檔案操作,資料庫操作等。每一個*.do均有對應的FormBean名稱和ActionBean名稱,這些在Struts-config.xml中配置。

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

  
   Struts 體繫結構中的組件
                                                                                             圖-3
  
        圖-3 顯示了 ActionServlet (Controller) 、 Actionform (form State) 和 Action (Model Wrapper) 之間的最簡關係。
  體繫結構中所使用的組件如下表:
   ActionServlet   控制器
   ActionClass    包含事務邏輯
   Actionform    顯示模組資料
   ActionMapping   協助控制器將請求映射到操作
   ActionForward   用來指示操作轉移的對象
   ActionError    用來儲存和回收錯誤
   Struts 標記庫  可以減輕開發顯示層次的工作        .NET 中如何使用 Struts 的設想    1 )模型( Model )
  
   這裡寫業務層。   
   2 )視圖( View )
  
  視圖當然指的是 .apsx 檔案。
  
   3 )控制器( Controller )         這裡是一個轉向控制器,由 xml 配置完成,就像真正的 struts 一樣。 這裡提的是一個簡化的,精鍊 struts 思想的 .net 版本使用方法。 例子如下: 一個使用者註冊系統,使用者通過網頁輸入相關資訊:註冊 識別碼,密碼, EMAIL ,若註冊成功,則返回成功提示資訊,反之出現註冊失敗提示資訊。 註冊頁面: reguser.aspx 設定檔:   Struts-config.xml :
   <Struts-config>
  
   <forward name="failure" path="/ messageFailure.aspx"/>
  
   <forward name="success" path="/ messageSuccess.aspx"/>        </Struts-config> 核心代碼: 如果,註冊成功,轉向 “success” ,而 “success” 是什麼頁面由設定檔決定;這樣就分離了 view (介面層)和 Controller (控制層),有業務層( Model )由控制層來訪問,這樣介面層就可以專心於其美工設計。也許你會說這隻不過是個頁面導航。 關於頁面導航,我認為那將是今後的一個發展方向,事實上,這樣做,使系統的脈絡更加清晰。通過一個設定檔,即可把握整個系統各部分之間的聯絡,這對於後期的維護有著莫大的好處。尤其是當另一批開發人員接手這個項目時,這種優勢體現得更加明顯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.