Struts 體繫結構與工作原理(圖)

來源:互聯網
上載者:User
 

   Struts 體繫結構是目前基於java的 web系統設計中廣泛使用的mvc構架。 基本概念
  
  Struts是Apache 基金會Jakarta 項目組的一個Open Source 項目,它採用模型-視圖-控制器(Model-View- Controller,簡稱MVC)模式,能夠很好地協助java 開發人員利用J2EE開發Web應用。和其他的java架構一樣,Struts 也是物件導向設計,將MVC模式"分離顯示邏輯和商務邏輯"的能力發揮得淋漓盡致。Structs 架構的核心是一個彈性的控制層,基於如 Java Servlets,JavaBeans,ResourceBundles與XML等標準技術,以及 Jakarta Commons 的一些類庫。Struts有一組相互協作的類(組件)、Serlvet以及jsp tag lib組成。基於struts構架的web應用程式基底本上符合JSP Model2的設計標準,可以說是一個傳統 MVC設計模式的一種變化類型。
  
  Struts有其自己的控制器(Controller),同時整合了其他的一些技術去實現模型層(Model)和視圖層(View)。在模型層,Struts可以很容易的與資料訪問技術相結合,如 JDBC / EJB ,以及其它第三方類庫,如 Hibernate / iBATIS ,或者 Object Relational Bridge(對象關係橋)。在視圖層,Struts能夠與JSP,包括 JSTL 與 JSF,以及 Velocity 模板,XSLT 與其它展示層技術。
  
  Struts 為每個專業的 Web 應用程式做背後的支撐,協助為你的應用建立一個擴充的開發環境。 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體繫結構中的組件
  

  

圖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版本使用方法。

例子如下:

一個使用者註冊系統,使用者通過網頁輸入相關資訊:註冊ID號,密碼,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.