oracle application framework(OAF)基础

发布时间:2016-12-8 12:18:37 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"oracle application framework(OAF)基础",主要涉及到oracle application framework(OAF)基础方面的内容,对于oracle application framework(OAF)基础感兴趣的同学可以参考一下。

文章整理自网络------------------------------------------------------------OAF基础知识:本章首先以一个最简单的JSP应用的场景,介绍一下Java Web应用的最基本知识。然后结合OAF框架讲解OAF的基本原理知识本章的学习目标:l  理解模型-视图-控制器框架设计模式l  理解OAFramework中业务逻辑和数据处理(模型)的部分:BC4J,及主要的BC4J对象。l  理解OAFramework中用户界面(视图)的处理:基于UIX的OAExtension和元数据库。l  理解OAFramework中的控制器:OA Controller,使用户可以通过视图操作模型数据JSP应用的基本结构:什么是Web应用Web应用是使用Web浏览器通过Internet或Intranet访问Web服务器上的应用程序。我们并不需死抠外界对于Web应用的定义,而应该去了解Web应用的基本结构。Web应用包括两个步骤:l  用户通过Web浏览器向Web服务器发送请求,如访问一个页面或填写一个表单后提交表单l  Web服务器作出响应,将处理完成的HTML传回浏览器,用户可以查看处理的结果下一节介绍典型的JSP应用结构。JSP应用简介一个典型的JSP应用包括以下几个部分:客户端浏览器、数据库服务器和中间层Web服务器。l   浏览器和中间层通过HTTP协议进行通信。当用户通过浏览器向Web服务器请求一个JSP文件时,浏览器发送一个HTTP请求到WEB服务器。JSP文件是一个混合了Java代码和HTML代码的脚本文件,在运行时,JSP文件将被编译成servlet类。通常把与数据相关的业务逻辑封装在JavaBeans中,这样可以实现业务封装和重用。中间层Web服务器和数据库端是通过JDBC接口实现数据存取。JSP中调用这些JavaBeans来处理业务逻辑。l  Web服务器处理完成之后(处理完数据库交互,并且产生HTML代码),向浏览器返回一个HTTP响应,将HTML返回给浏览器。HTTP不是一种基于连接的协议,通过Servlet Session可以保持浏览器和Web服务器的状态,完成一系列相关的操作。Servlet Session一般还需要通过浏览器端保持Cookie来实现。HTTP请求浏览器向Web服务器HTTP请求可以有多种,这里介绍最重要的两种,也是我们必须要了解的两种请求:GET和POST。1、HTTP GET当用户在浏览器地址栏输入网址,通过点击链接或带链接的图片,链接到某一网址,浏览器将向Web服务器发送一个GET请求。2、HTTP POST一般情况下,任何来自Form的提交都将触发POST请求(当然Form请求也可以触发GET请求,但这种情况我们不作考虑,而且在OAF中Form的提交全部触发POST请求)。OAF应用的基本结构OAF框架是一个基于MVC架构的应用框架,学习OAF必须理解MVC框架,因为实际上OAF开发也是对M-V-C这3层结构进行开发。MVC架构设计简介OAF是一个应用Model-View-Controller(MVC)架构设计的开发框架。OAF Model、View、Controller简介OAF开发框架使用Oracle Business Components forJAVA(以下简称BC4J)框架作为其模型部分,来实现业务逻辑和数据操作。OAF使用元数据库支持的(整个页面由XML来定义,定义存储于Oracle数据库中)UIX框架作为其视图部分,将BC4J中的数据展示给用户。OAF页面是通过JDeveloper工具定义XML结构,一般情况下不需要编程实现。OAF采用OA Controller作为控制器部分,OA Controller将模型数据显示到用户界面,并响应用户动作。下图形象地表示了OAF中模型、视图和控制器每一层所包含对象和所实现的功能。l  模型模型部分包含了3个最基本的BC4J对象:实体对象、视图对象和应用程序模块。实体对象(EntityObject):图中“SupplierEO”。实体对象直接表示了数据库的数据,并实现了创建行、删除行和验证行的功能,同时自动实现实体和数据库之间的数据同步(通过实体对象自动调用DML操作,这由BC4J框架实现,无须编程控制)。视图对象(ViewObject):直接引用实体对象中的数据(或数据库中的数据),视图对象提供了页面显示所需的数据(页面不能直接引用实体对象中的数据,必须通过视图对象才可以显示给用户)。视图对象可以基于实体对象创建,也可以基于数据库查询SQL创建。针对基于实体对象的视图对象的更改可以被直接同步到数据库中,而针对基于SQL查询的视图对象不能直接同步到数据库中,因为只有实体对象才实现调用DML操作,将数据更新到数据库中。如图中 “SuppliersVO”,直接引用数据库的只有单向的读,而通过实体对象可以实现双向的读写。应用程序模块(ApplicationModule):提供了容器,用于容纳视图对象实例和嵌套的应用程序模块实例。同时提供了存取数据的唯一接口:通过查询视图对象实例获取数据;通过更改视图对象实例来更改实体对象的数据,最终更改数据库中数据。注意:这里提到视图对象和视图对象实例,类似于类与对象的关系。视图对象是定义,而视图对象实例是运行时存在于应用程序模块实例的,真正拥有数据(视图行集)的视图对象实现类的实例。本文中会多次提到视图对象和视图对象实例,有时并没有细分,这两者指的是相同的内容。 l  视图从图上我们可以看到,OAF页面实际上是一个Web Beans的hierarchy结构,由唯一的根Web Bean(pageLayout)开始展开,形成一个树型结构。每个Web Bean都由一个Java Bean或一组Java Beans实现,在运行时根据定义或编程设置来产生HTML代码。有两种类型的WebBean:Region和Item。Region是一种容器,可以容纳其它Region和Item,而Item是最小单位,不能再容纳其它元素。如Table是一个包含行、列、单元格的Region,而Button是一个Item。同时Region可以拥有自己的Controller类和应用程序模块,而Item不可以(根Web Bean,即pageLayout必须指定应用程序模块来作为根应用程序模块)。说明:对于简单的页面一般只在pageLayout上指定根应用程序模块和控制器类,甚至可以不指定控制器类。而对于复杂的页面(特别是存在可共用Region的时候),除了指定根应用程序模块之外,还需要根据功能逻辑划分,指定应用程序模块和控制器。虽然这增加了文件维护的代价和可能的程序运行时的性能(需要实例化更多的对象),但是把不同的逻辑功能组织在各自的应用程序模块和控制器中,有利于理解程序结构的分解和设计,有利于编码的组织和维护。页面向用户展示来自模型(视图对象实例)的数据时,是通过数据绑定机制来实现的,通过设置Item的两个属性:View Instance Name和View Attribute Name,通过在Controller类中执行视图对象实例的查询,将数据从数据库中提取出来,将属性值赋给Item。在用户请求OAF页面时,OAF创建web bean hierarchy,从根Region开始依此调用每个Region上的Controller类的代码进行处理,处理完成后将web bean hierarchy传递给UIX框架来生成HTML代码,返回给浏览器。 l  控制器控制器由OAController类实现,用于初始化页面和响应用户操作。OA Controller类有两个最主要的方法,绝大多数情况下我们都是对这两个方法进行编程:processRequest()用于处理GET请求,一般也用于初始化用户界面显示和视图对象查询。 processFormRequest()用于处理POST请求,一般用于捕获和处理用户事件。注意:在processFormRequest时,不能直接更改Region/Item的属性(仅有少数几个属性可以更改,可以通过属性和视图对象实例绑定实现更改),一般不用于更改用户界面。 如果用户在页面A输入了数据,然后单击按钮,事件处理完成后迁移到页面B,那么其处理过程如下:Ø 对于所有的页面A中Region带有Controller类的,依此执行processFormRequest()Ø 执行完成后,调用Forward或Redirect到页面BØ 对于所有的页面B中Region带有Controller类的,依此执行processRequest()

上一篇:MySQL 的并集、交集和差集
下一篇:WinCE5.0/6.0下,通过command line实现自动化编译

相关文章

相关评论