oracle application framework(OAF)基础

简介: 文章整理自网络------------------------------------------------------------OAF基础知识:本章首先以一个最简单的JSP应用的场景,介绍一下Java Web应用的最基本知识。

文章整理自网络

------------------------------------------------------------

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()





相关文章
|
Oracle 关系型数据库 数据库
数据库小技能:Oracle基础之【常用函数】
虚表dual ,它是一行一列,没有任何数据,常常用于测试。
151 0
|
SQL 算法 Oracle
数据库小技能:Oracle基础之【查询】
DQL:(数据查询语言,select)用来完成对数据库中的数据查询。 DDL(数据定义语言,create,drop,truncate截断表)操作表结构。 DML(数据库操作语言,insert,delete,update)操作数据
101 0
|
SQL 存储 缓存
数据库小技能:Oracle基础【中篇】
提高数据库运行效率的方法:从数据库系统级优化、数据库设计级优化和程序实现级优化。
133 0
|
存储 SQL 缓存
数据库小技能:Oracle基础【上篇】
QPS: 请求进入的速度 并发数: 系统中同时存在的请求数 并发数 = QPS * 耗时
159 0
数据库小技能:Oracle基础【上篇】
|
Oracle 关系型数据库 数据库
oracle基础
oracle基础
94 1
|
存储 缓存 Oracle
oracle基础
oracle基础
82 0
|
SQL Oracle 关系型数据库
Oracle数据库PL/SQL学习笔记二——基础控制语句
Oracle数据库PL/SQL学习笔记二——基础控制语句
95 0
|
SQL 存储 Oracle
Oracle数据库 | 基于SQL基础分析
Oracle数据库 | 基于SQL基础分析
107 0
|
SQL 存储 运维
Oracle--基础
Oracle--基础
221 0
|
Oracle 关系型数据库
Oracle基础语句练习记录
Oracle基础语句练习记录
83 0

推荐镜像

更多