继续上一篇博客,本篇博客介绍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好。

转载于:https://www.cnblogs.com/jzssuanfa/p/7148908.html

Apache OFBIZ高速上手(二)--MVC框架相关推荐

  1. 201128阶段二MVC框架模式、FFmpeg

    目录 一.学习的知识点 一)1单例类的实现 一)2MVC框架模式 一)3 FFmpeg 处理音视频的框架 二.遇到的问题 三.当天学习的收获 一.学习的知识点 设计模式:比框架更小的元素 小技巧,对具 ...

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

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

  3. iris-v12 框架搭建二 mvc架构

    iris-v12 框架搭建二 mvc架构 在这里我就默认你已经会了搭建非mvc架构的方法(不懂得看iris-v12 框架搭建一 快速启动). 想要搭建mvc的架构非常简单,只要使用iris的mvc包就 ...

  4. MVC框架中的值提供机制(二)

    在MVC框架中存在一些默认的值提供程序模板,这些值提供程序都是通过工厂模式类创建;在MVC框架中存在需要已Factory结尾的工厂类,在值提供程序中也存在ValueProviderFactories工 ...

  5. Struts和SpringMVC两种MVC框架比较

    基于Web的MVC framework在J2EE的世界内已是空前繁荣.TTS网站上几乎每隔一两个星期就会有新的MVC框架发布.目前比较好的MVC,老牌的有Struts.Webwork.新兴的MVC框架 ...

  6. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

    原文:ASP.NET Core 入门教程 2.使用ASP.NET Core MVC框架构建Web应用 一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 ...

  7. MVC框架浅析(基于PHP)

    MVC框架浅析(基于PHP) MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数 ...

  8. 从 0 开始手写一个 Spring MVC 框架,向高手进阶

    转载自   从 0 开始手写一个 Spring MVC 框架,向高手进阶 Spring框架对于Java后端程序员来说再熟悉不过了,以前只知道它用的反射实现的,但了解之后才知道有很多巧妙的设计在里面.如 ...

  9. springmvc流程_基于Spring MVC框架的Http流程分析

    一.问题提出 我们可以方便的利用Spring MVC进行业务开发,请求的大部分工作都被框架和容器封装,使得我们只需要做很少量的工作.但是整个http请求流程是怎么样的?Spring MVC框架在其中起 ...

最新文章

  1. 201521123070 《JAVA程序设计》第2周学习总结
  2. GSON使用笔记(1) -- 序列化时排除字段的几种方式
  3. 好久不见webmin
  4. x64 结构体系下的内存寻址
  5. Debian+Django+uWsgi+nginx+mysql+celery
  6. Unix环境下的编程,所涉及的主要c语言知识
  7. Java Matcher源码学习记录
  8. matlab2014 下的 libsvm 安装
  9. 川大计算机类专业的录取分数线,四川大学重点专业排名及录取分数线
  10. Vue 短信验证码组件
  11. 我的中国心-百家姓头像
  12. Revit API之BoundingBoxXYZ的用法和剖面框(Section Box)
  13. MySQL设计工厂管理数据库(Ⅰ)—表结构设计
  14. 项目:淘宝用户数据分析
  15. 一加5t怎么刷鸿蒙系统,一加5t刷机什么系统好
  16. Visual Studio和VS Code的区别
  17. Allegro按照板框边沿敷铜并进行内缩和外扩
  18. 太阳直射点纬度计算公式_正午太阳高度角计算公式
  19. _IO,_IOR,_IOW,_IOWR
  20. C语言输出0-100奇数

热门文章

  1. OC与c混编实现Java的String的hashcode()函数
  2. 电路与电子学-第一章直流电路分析方法小概括
  3. C++容器(三):pair类型
  4. 异常:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。
  5. 很牛逼的短链接,我们一起来晒晒短链接程序(转)
  6. [导入]Update实现多表更新
  7. 圣诞节玩购目的地大比拼
  8. 洛谷P1280 caioj 1085 动态规划入门(非常规DP9:尼克的任务)
  9. 【开源】SpringBootNetty聊天室V1.2.0升级版本介绍
  10. Codeforces 458C - Elections