`
acanblog
  • 浏览: 3517 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个请求中,ADF、JSF究竟做了哪些工作

阅读更多

       在ADF开发中,一个请求发生后,经过ADF处理后,我们可以很快得到响应页面,但在请求过程中ADF框架在背后究竟做了什么东西呢?今天让我们一起来了解下,ADF、JSF是基于组件模型的,不同于请求响应,它的每个组件具有生命周期的概念,在不同的阶段处理、完成不同的任务,理解了这个东西对于日常开发是很有帮助的,我们会清楚地知道代码会在哪个阶段执行,还有当发生异常时,我们可以根据异常快速定位到大概是哪些处理阶段发生问题,从而有针对性地排查处理,不扯那么多了,进入正题。

       首先给出JSF和Oracle ADF页面请求处理的生命周期的序列图:

 

 

以下对序列图进行说明:

1、一个http://yourserver/yourapp/faces/some.jsp到达;

2、ADF的过滤器ADFBindingFilter会找到当前session的绑定容器(BindingContext),如果是用户第一次访问则会进行创建:

在BindingContext初始化中,ADF会获取web.xml文件<context-param>的 CpxFileName值,加上.cpx后缀作为绑定上下文数据文件,默认参数是:DataBindings;

读取DataBindings.cpx文件以发现数据控制定义,用于在运行时实例化绑定容器的页面定义文件名以及将JSP页面与其页面定义文件相关联的页面映射;

构造每个数据控件的一个实例,并引用每个BindingContainer(页面级别),每个绑定容器的内容在第一次被页面使用时被懒惰地加载

BindingContextIn Brief, Data Bindings file contains the page Map, Page Definition references , References to Data Controls.

3、接着ADFBindingFilter在参与请求的每个数据控件上调用beginRequest()方法(不同的阶段会有不同的调用方法,生命周期决定的),这样就可以在每个请求开始时通知每个数据控件,从而可以执行必要的设置。

4、从AM池中获取AM实例;

5、在JSF的各个标准处理阶段(Lifecycle类,由FacesServlet负责创建),除了完成自己的工作外,顺便通知ADF(ADFPhaseListener类),以便ADF在不同的阶段增加自己的处理内容,毕竟ADF是继承自JSF,肯定需要有自己特色的一些东西的,具体如图所示:

 

 

6、ADFPhaseListener创建一个ADF PageLifecycle对象来处理每个请求,并将不同阶段的处理委托给ADF PageLifecycle类中的相应方法,此过程会创建BindingContainer对象;

7、JSF转发到响应的页面;

8、页面上的UI组件访问页面的绑定容器中的值绑定和迭代器绑定,并在浏览器中输出

9、ADFBindingFilter在参与请求的每个数据控件上调用endRequest()方法(各司其职),这样可以在每个请求结束时通知每个数据控件,从而可以执行必要的资源清理工作;

10、将应用程序模块的实例释放回应用程序模块池

11、用户在浏览器看到响应页面。

 

更多文章请见我的个人博客:http://www.acanblog.com

 

  • 大小: 18.5 KB
  • 大小: 7 KB
0
0
分享到:
评论

相关推荐

    ADF(JSF)框架中使用国际化

    在Java世界中,ADF(Oracle Application Development Framework)和JSF(JavaServer Faces)是两种常见的Web应用程序开发框架。ADF提供了一种丰富的用户界面组件库,而JSF则是一种用于构建和呈现用户界面的MVC...

    J2EE JSF 简介

    - **Oracle的ADFFaces**:这是一个完全符合JSF规范的组件库,为JSF应用程序开发提供了一组广泛的增强UI组件。 - **MyFaces**:这是一个开源项目,通过Apache提供,它对JSF的基本UI组件进行了增强,拥有更广泛的UI...

    ADF应用程序样例(中文)

    - **步骤1**:在JDeveloper中创建一个新的Fusion Web Application,并选择ADF作为技术栈。 - **步骤2**:指定应用名称,例如“DemoApp”。 - **步骤3**:创建模型层工程,选择“Model”类型。 - **步骤4**:设置...

    ADF界面使用多皮肤 ADF刷新界面方法

    4. **切换皮肤逻辑**:在ADF应用中,可以创建一个控制组件,如按钮或下拉菜单,供用户选择皮肤。当用户选择新皮肤后,通过调用JSF(JavaServer Faces)的请求处理生命周期,更新CSS引用或重定向页面以应用新皮肤。 ...

    ArcGIS Server Java ADF案例教程

    - **自定义Functionality**:GISFunctionality是ADF中的一个关键概念,允许开发者扩展地图功能,如地图放大、缩小等。自定义Functionality可以实现更加个性化的地图操作体验。 - **调用ArcObjects**:ArcObjects是...

    ADF培训_10_JSFIntroduction_2009

    JavaServer Faces (JSF) 和 ADF Faces 是两种在企业级Web开发中广泛使用的框架,尤其在Oracle ADF(Application Development Framework)环境中。本部分将深入探讨这两个框架的基础知识、架构以及它们如何协同工作。...

    Oracle ADF faces rich client 11g 开发文档

    Oracle ADF (Application Development Framework) 是一个用于快速构建企业级应用的强大框架,它简化了Java EE应用程序的开发过程。其中ADF Faces Rich Client是基于JavaServer Faces(JSF)技术的UI组件库,为开发者...

    JSF 资源 managed bean 课件

    - **零参构造函数**:Bean必须有一个无参数的构造函数,这允许容器实例化Bean而无需传递任何参数。 - **省略所有构造器**:如果不显式定义构造函数,Java默认会提供一个无参数构造函数。 - **可序列化**:尽管...

    ArcGIS_Server_Java_ADF_案例教程

    而ADF的逻辑结构则描述了ADF中的各种对象如何协同工作以完成特定任务,例如请求处理、服务调用、结果渲染等。 在ADF的常用组件部分,教程详细介绍了ADF页面结构和ADF中的服务,以及ADF如何使用Web服务。页面结构...

    JSFAPI myfaces-core-1.2.0

    2. ** Trinidad**: MyFaces的另一个组件库,源自Oracle ADF,提供了丰富的组件和高级功能。 3. **Portlet Support**: MyFaces Core 1.2.0支持portlet应用程序,可以部署在portlet容器中。 4. **Performance优化**: ...

    adf BEAN传参数

    在ADF(Oracle ADF)中传递参数给后端的Bean是一个常见的需求,这通常涉及到将参数值传递给Java Bean以便处理用户的请求。根据提供的文件内容,以下是四种在ADF中传递参数给Bean的方法: 1. 使用f:param标签传递...

    ArcGIS Server Java ADF 案例教程.pdf

    - **GISFunctionality概述**:GISFunctionality是ADF中的一个重要概念,用于封装与GIS相关的功能。 - **自定义一个地图放大5倍的Functionality案例**:通过创建自定义的GISFunctionality,可以实现特定的地图操作,...

    Disable Browser Caching in JSF

    1. 创建一个`Filter`类,该类会在请求到达JSF页面之前拦截它们。在`doFilter()`方法中,你可以设置HTTP响应头以指示浏览器不应缓存请求的资源。 ```java public class NoCacheFilter implements Filter { @Override...

    adf oracle

    对于希望利用最新技术和方法论构建高质量、高可用性的企业应用的组织而言,Oracle ADF无疑是一个值得考虑的强大选择。通过采用Oracle ADF,开发团队可以更专注于业务逻辑的实现,而不用担心底层基础设施的搭建和维护...

    【英文】ADF Web界面开发指南

    ADF Faces是Oracle ADF框架的一个重要组成部分,它基于JavaServer Faces(JSF)标准,提供了丰富的用户界面组件集合,旨在简化Web应用开发流程。ADF Faces允许开发者通过拖放组件来创建具有高度交互性和富客户端体验...

    arcgisserver精典讲座系列之二--Web ADF

    Web ADF(Web Application Developer Framework)是Esri为开发者提供的一个基于Java平台的开发框架,主要应用于构建地理信息系统(GIS)相关的Web应用程序。它利用了一组标准化的JSF(JavaServer Faces)控件以及...

    Oracle ADF

    ADF Business Components负责抽象和封装业务逻辑层,ADF Model扮演数据传输层的角色,ADF Controller负责处理用户请求并协调应用程序流程,而ADF Faces则提供了基于JSF(JavaServer Faces)的用户界面组件库。...

    Web ADF_Clientside JavaScript and CSS Reference.doc

    Web ADF的JavaScript库提供了一个对象模型,允许开发者访问和操作JSF控件。这些对象可以用来监听事件、改变控件状态或响应用户的交互。 **列表文件** 文档中应包含一系列JavaScript和CSS文件的清单,这些文件是Web ...

    Web GIF ADF

    - **控制层**对应于 WebGIS 中的业务逻辑层,负责处理用户请求和调用相应的服务。 - **视图层**对应于 WebGIS 中的用户界面层,负责向用户提供友好的操作界面。 综上所述,采用 Oracle ADF 应用开发架构能够显著...

    jboss as 7 support jsf2.2.1 modules

    “一个视图(A View)”:应用程序中的任何JSF页面 “一次方法调用(A Method Call)”:通过EL表达式从流图调用应用逻辑 “一个开关(A Switch)”:在流图中基于布尔型EL表达式进行导航决策 “一次流调用(A ...

Global site tag (gtag.js) - Google Analytics