Apache OFBIZ高速上手(二)--MVC框架


           繼續上一篇博客,本篇博客介紹OFBizMVC框架。

1OFBiz特點

       

         OFBiz最基本的特點是OFBiz提供了一整套的開發基於Javaweb應用程序的組件和工具。包含實體引擎、服務引擎、消息引擎、工作流引擎、規則引擎等。

 

2、關於OFBiz的版本號以及文檔

     

      版本號一直在更新,如今更新到13.0.7了。

      OFBiz的學習文檔,少之又少,國內的文檔都是過時了的,大多都是4.x的版本號,國外的文檔也非常少。所以本博客都會將自己研究的OFBIZ的東西分享出來。

 

3OFBizMVC框架

       OFBiz採用的是Service to Worker模式,大名鼎鼎的Struts 1採用的也是這樣的架構。Serviceto Worker模式的目標就是維護ActionViewController之間的分離。


  

Controller

          OFBiz實現MVC是通過XML來串聯這三者之間的依賴關系。

這里牽扯到<view-map/><request-map/><handler/>這三個基本的XML元素。

這三個元素都定義在${applications}/WEB-INF/controller.xml中。上篇文章說過了此文件是定義viewcontroller之間的映射關系。不僅包括了請求的映射關系。同一時候還包括了視圖的映射關系,以及一系列的處理器不如視圖解析處理器,事件處理器等。看完這段話之后也不難理解為什么controller.xml就解耦了。以下詳細說一下他們是怎樣工作的?

        配置文件內容例如以下:

<!--加入班級-->
<request-mapuri="createClazz">
	<securityhttps="true" auth="true"/>
        <eventtype="service" invoke="createClazz"/>
        <responsename="success" type="request-redirect"value="ViewClazz">
              <redirect-parametername="clazzId"/>
        </response>
        <responsename="error" type="request-redirect"value="EditClazz">
              <redirect-parametername="clazzId"/>
        </response>
</request-map>
 
<view-mapname="FindClazz"page="component://college/widget/ClazzScreens.xml#FindClazz"type="screen"/>
<view-mapname="ViewClazz"page="component://college/widget/ClazzScreens.xml#ViewClazz"type="screen"/>
<view-mapname="EditClazz"page="component://college/widget/ClazzScreens.xml#EditClazz"type="screen"/>

節點解析:

節點一:<Request-map/>

                    Request-map:通過名字也能夠看出這是請求的映射關系。Uri:表示要映射的請求。

                    本節點里面的幾個節點的意思:

                     Security:安全級別的設置,是否要進行權限檢查,是否應該是https的。

                     Event:此請求觸發的事件

                     response:請求的配置,第一個請求標簽的意思是說加入成功后跳轉到顯示頁面; 第二個請求標簽的意思是說加入有錯誤。跳轉到編輯頁面。理論上這個標簽中的name能夠自己定義名  字,只是ofbiz內置了successerror這兩個值,類似於struts2. value值相應於<view-map/>中的name屬性值。之所以不直接寫上頁面,一方面是為了解耦,還有一方面是為了能夠針對不同的view設置不同的type等屬性。屬性type="view"表示得到一個頁面。type屬性幫助ofbiz集成不同的顯示層技術。Common-controller定義了不同的type和其相應的ViewHandler

 節點二:<view-map/>

                    View-map:這個標簽是定義顯示界面的screen

                     此節點中的屬性:name定義當前view-map的名稱,和<request-map/>標簽中的<request/>標簽相相應

                                                           page定義當前前端展示的視圖布局文件

                                                            type:表示用什么技術展示視圖,通常為screen.

 

View

           OFBiz支持非常多類型的頁面展示技術。JSP/FreeMarker/Velocity/PDF/Screen/widget等技術。widgetOFBiz自己封裝的一個特有的前台頁面技術。前面介紹過了。這樣一來OFBiz特別適合高速開發,開發一個模塊,對用戶進行增刪改查。會非常快,html,css基本都不用寫,僅僅須要寫view,services,entity等就能夠了。

相反對於不熟悉OFBiz卻認為它非常繁瑣。還不如自己封裝。

 

Model

    OFBiz的實體引擎非常強大,而且靈活,開發者不須要JDBC知識,不用寫SQL語句。基本上,OFBiz封裝的可以解決大部分的數據庫操作。

 

Web運行過程


 

4、總結

    

        View封裝的是對數據源Model的一種現實。

一個模型能夠有多個視圖。而一個視圖理論上也能夠用不同的模型關聯起來。

        Model封裝的是數據源和全部基於對這些數據的操作。在一個組件中。Model往往表示組件的狀態和操作狀態的方法。

       Control:封裝的是外界作用於模型的操作。通常這些操作會轉發到模型上。並調用模型中對應的一個或者多個方法。一般Controller在Model和View之間起到了溝通的作用。處理用戶在View上的輸入,並轉發給Model。這樣Model和View兩者之間能夠做到松散耦合。甚至能夠彼此不知道對方。而由Controller連接起這兩個部分。從而解耦。

 

         看完OFBizMVC框架后,事實上它和Struts中的MVC模式非常相似。Struts MVC框架很多其它的是技術框架,主要目的是分離開發邏輯。使開發過程更easy協作分工。這樣就難勝任大規模企業級項目。OFBizMVC封裝的一套與業務相關的MVC。很多其它的是通過XML對系統進行建模。以XML來定義系統中不同的層次關系。盡量降低些Java代碼的數量。寫了一套以XML為基礎的mini language來做一些簡單的邏輯處理。在Struts中仍要寫大量的Java代碼。

從上面xml代碼中也不難看出來,OFBiz在代碼復用方面比struts好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM