• 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好。

  • 相关阅读:
    TCP连接之报文首部
    Django基础篇--用户权限管理和组管理
    MySQL聚簇索引
    浅谈Redis之慢查询日志
    Django基础篇--模板和路由分发
    Django--数据库查询操作
    Django基础篇--Models
    Sqlautocode使用过程的一些坑
    关于域名的一点事
    unicode编码和utf8编码的区别
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7148908.html
Copyright © 2020-2023  润新知