继续上一篇博客,本篇博客介绍OFBiz的MVC框架。

1、OFBiz特点

OFBiz最基本的特点是OFBiz提供了一整套的开发基于Java的web应用程序的组件和工具。包含实体引擎、服务引擎、消息引擎、工作流引擎、规则引擎等。

2、关于OFBiz的版本号以及文档

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

OFBiz的学习文档,少之又少,国内的文档都是过时了的,大多都是4.x的版本号,国外的文档也非常少。所以本博客都会将自己研究的OFBIZ的东西分享出来。

3、OFBiz的MVC框架

OFBiz採用的是Service to Worker模式,大名鼎鼎的Struts 1採用的也是这样的架构。Serviceto
Worker模式的目标就是维护Action,View和Controller之间的分离。

Controller

OFBiz实现MVC是通过XML来串联这三者之间的依赖关系。

这里牵扯到<view-map/>、<request-map/>、<handler/>这三个基本的XML元素。

这三个元素都定义在${applications}/WEB-INF/controller.xml中。上篇文章说过了此文件是定义view,controller之间的映射关系。不仅包括了请求的映射关系。同一时候还包括了视图的映射关系,以及一系列的处理器不如视图解析处理器,事件处理器等。看完这段话之后也不难理解为什么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内置了success和error这两个值,类似于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等技术。widget是OFBiz自己封装的一个特有的前台页面技术。前面介绍过了。这样一来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连接起这两个部分。从而解耦。

看完OFBiz的MVC框架后,事实上它和Struts中的MVC模式非常相似。Struts
MVC框架很多其它的是技术框架,主要目的是分离开发逻辑。使开发过程更easy协作分工。这样就难胜任大规模企业级项目。OFBiz的MVC封装的一套与业务相关的MVC。很多其它的是通过XML对系统进行建模。以XML来定义系统中不同的层次关系。尽量降低些Java代码的数量。写了一套以XML为基础的mini
language来做一些简单的逻辑处理。在Struts中仍要写大量的Java代码。

从上面xml代码中也不难看出来,OFBiz在代码复用方面比struts好。

Apache OFBIZ高速上手(二)--MVC框架的更多相关文章

  1. Apache OFBIZ高速上手(三)--文件夹&amp;&amp;配置文件介绍

    1.OFBiz简单介绍,什么是OFBiz           OFBiz is an Apache Software Foundation top level project.           A ...

  2. 玩转Spring MVC(二)----MVC框架

    早期程序员在编写代码时是没有一个规范的,系统的业务逻辑和数据库的访问时混合在一起的,不仅增加了大量的重复工作,而且增加了后期维护的难度. 后来,人们逐渐发现某些通用的功能是可以单独的封装起来的,这样就 ...

  3. 手写MVC框架(二)-代码实现和使用示例

    --------上一篇:手写MVC框架(一)-再出发----- 背景 书接上文,之前整理了实现MVC框架需要写哪些东西.这周粗看了一下,感觉也没多少工作量,所以就计划一天时间来完成.周末的时间,哪会那 ...

  4. 手写Spring MVC框架(二) 实现访问拦截功能

    前言 在上一篇文章中,我们手写了一个简单的mvc框架,今天我们要实现的功能点是:在Spring MVC框架基础上实现访问拦截功能. 先梳理一下需要实现的功能点: 搭建好Spring MVC基本框架: ...

  5. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

  6. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比

    在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...

  7. 自己写一个java的mvc框架吧(二)

    自己写一个mvc框架吧(二) 自己写代码的习惯 写一个框架吧,如果这个框架会用到一些配置上的东西,我自己习惯是先不用考虑这个配置文件应该是怎样的,什么形式的,先用一个java对象(比如叫 Config ...

  8. 开发指南专题二:JEECG微云高速开发平台JEECG框架初探

    开发指南专题二:JEECG微云高速开发平台JEECG框架初探 2.JEECG框架初探 2.1演示系统 打开浏览器输入JEECG演示环境界址:http://demo.jeecg.org:8090/能够看 ...

  9. 【工作笔记二】ASP.NET MVC框架下使用MVVM模式

    ASP.NET MVC框架下使用MVVM模式 原文:http://www.cnblogs.com/n-pei/archive/2011/07/21/2113022.html 对于asp.net mvc ...

随机推荐

  1. Android仿今日头条和知乎等App顶部滑动导航实现代码分析及源码下载

    一.本文所涉及到的知识点 源码下载 二.目标 通过利用ViewPager+FragmentStatePagerAdapter+TabLayout 实现顶部滑动效果,如图: 三.知识点讲解 1.View ...

  2. 第一次android混淆实战

    第一次混淆,主要是因为引用本地第三方jar包的问题.虽然说本地第三方jar包自动避免混淆,但一些本地第三方jar包下的一些包要避免混淆.比如: 文中的com.org 这些包名都要避免混淆. 下面是我用 ...

  3. vue iView 打包后 字体图标不显示

    问题描述: 今天webpack打包后发现iView 字体图标不显示 解决方案: build/webpack.prod.conf.js 这个文件里面 module: { rules: utils.sty ...

  4. RTL Compiler之Technology Library

    1 Target Library Design Compiler uses the target library to build a circuit. During mapping, Design ...

  5. dotfuscator 如何设置

  6. 最适合初学者的Linux运维学习教程2018版

    Linux运维工程师是一个新颖岗位,现在非常吃香,目前从行业的角度分析,随着国内软件行业不断发展壮大,越来越多复杂系统应运而生,为了保证系统稳定运行,必须要有足够多的Linux运维工程师.维护是软件生 ...

  7. 默认ttl参考

    UNIX 及类 UNIX操作系统 ICMP 回显应答的 TTL 字段值为 255 Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64 WINXP-32bit 回显应答的 T ...

  8. PAT_A1114#Family Property

    Source: PAT A1114 Family Property (25 分) Description: This time, you are supposed to help us collect ...

  9. Day 12 字符串和正则表达式

    使用正则表达式 正则表达式相关知识 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具,换句话说正则表达式是一种工具,它定义了字符串的匹配 ...

  10. 在Python中利用CVXOPT求解二次规划问题

    工作中需要用到cvxopt,cvxopt安装有坑,大家注意下.1.首先一定要卸载numpy,无论是直接安装的,还是anaconda安装的,主要是必须用whl安装numpy才不会有包的冲突2.二次规划包 ...