OFBiz的MVC框架
来源:互联网 发布:数据监控体系 编辑:程序博客网 时间:2024/06/02 04:23
Service to Worker模式的目标就是维护Action,View和Controller之间的分离。
Controller
ControlServlet是Front Controller(前端控制器),接收所有的请求,是请求的入口,执行一些的预处理后,交由RequestHandler去处理实际的请求工作,View层的处理交给ViewHandler进行处理,ViewHandler有很多实现类,还可以自定义,可以集成很多页面层显示技术,如JSP和FreeMarker等,处理流程如下图所示:
MVC的解耦的地方就是通过controller.xml配置文件实现的,配置文件如下所示:
<request-map uri="login"> <security https="false" auth="false"/> <event type="java" path="com.xxx.ldap.LdapLoginWorker" invoke="login"/> <response name="success" type="view" value="main"/> <response name="error" type="view" value="login"/> </request-map> <view-map name="main" type="screen" page="component://xxx/widget/CustomerScreens.xml#main"/> <view-map name="login" type="screen" page="component://xxx/widget/CommonScreens.xml#login"/>
request-map的response元素有一个属性name,这个name理论上可以任意选取,不过ofbiz内置了success和error这两个值,这类似于Struts2。
属性type如果是view表示得到一个页面,value值对于view-map中的name属性值。之所以不直接写上页面,而是增加view-map,一是为了解耦,二是针对不同的view,可以设置不同的type等属性。type属性很关键,正是这个属性帮助ofbiz集成不同的显示层技术。common-controller定义了不同的type和其对应的ViewHandler:
<!-- view handlers --> <handler name="screen" type="view" class="org.ofbiz.widget.screen.ScreenWidgetViewHandler"/> <handler name="screenfop" type="view" class="org.ofbiz.widget.screen.ScreenFopViewHandler"/> <handler name="screenxml" type="view" class="org.ofbiz.widget.screen.ScreenXmlViewHandler"/> <handler name="screentext" type="view" class="org.ofbiz.widget.screen.ScreenTextViewHandler"/> <handler name="jsp" type="view" class="org.ofbiz.webapp.view.JspViewHandler"/> <handler name="ftl" type="view" class="org.ofbiz.webapp.ftl.FreeMarkerViewHandler"/> <handler name="http" type="view" class="org.ofbiz.webapp.view.HttpViewHandler"/>
这里的name就对应view map中的type。实现解耦的类不是FrontController而是RequestHandler,请求代理类,在这里负责读取controller.xml文件中的对应关系,根据FrontController发送过来的请求,选择相应的业务动作进行业务更新,并且选择相应的视图View去解析并展示。在Service to Worker模式中,RequestHandler类的角色就是Dispatcher。
View
ofbiz支持很多类型的页面展示技术,JSP/FreeMarker/Velocity/PDF/Widget等。
View Handler:
ViewHandler负责选择相应的Renderer,进行页面显示的准备工作,对于简单的页面技术如JSP,JspViewHandler直接进行处理,不再委托给其他Renderer进行处理。AbstractViewHandler的子类中,包含Screen字眼的Handler通常相对较复杂,见上图中下面哪些Handler,典型的是ScreenWidgetViewHandler。
View Renderer:
Renderer负责具体的显示工作。
Model
ofbiz的实体引擎功能类似于其他的O-R Mapper,但是ofbiz的实体引擎不仅强大,而且灵活,程序员不需要JDBC知识,不用写SQL代码。基本上,实体引擎的封装能够解决大部分的数据库操作,同时也提供了给你写SQL代码,实现复杂SQL查询的空间。
- 浏览器发起请求
- ControlServlet收到请求,准备若干预备数据后将请求交由RequestHandler
- RequestHandler进行安全检查
- RequestHandler根据请求的类型分发给具体的处理者
- 返回结果
- OFBiz 的MVC框架
- OFBiz的MVC框架
- OFBiz的MVC框架
- OFBiz 的MVC框架
- OFBiz 的MVC框架
- OFBiz的MVC框架
- OFBiz 的MVC框架
- 基于Ofbiz的Web框架
- 基于Ofbiz的Web框架
- 基于Ofbiz的Web框架
- 基于Ofbiz的Web框架
- 基于Ofbiz的Web框架
- 基于Ofbiz的Web框架
- Apache OFBIZ快速上手(二)--MVC框架
- OFBiz MVC结构
- OfBiz开源框架
- 记录一个框架OFBiz
- ofbiz框架逻辑流程图
- 使用Unity3D创建一个幸运转盘
- 16进制颜色转换
- shader切角Icon
- 1004. 成绩排名 (20)
- GraphLab Create
- OFBiz的MVC框架
- java的访问权限
- HDU2602
- 你不知道的JavaScript--Item15 prototype原型和原型链详解
- MySQL下载安装、配置与使用
- 读effective objective-c 2.0 整理文章 - 41条 多用派发队列,少用锁
- nginx + tomcat 部署反向代理加负载均衡
- map中的地理编码和反编码
- 经典收藏