`
huhu0817
  • 浏览: 13916 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

jsf学习(关于jsf 生命周期 )

阅读更多

  这是jsf 的分析系列第三篇,随着不断的深入,jsf的设计变得越来越清晰。当然,在目前的规范中,jsf还是很不完善的,这也就导致了为什么jsf还是不能成为目前的主流框架。先不去谈论这些弊端,还是先看看一下jsf具体是如何运作的。
    对于jsf规范,个人觉得和其他框架相比,最大的区别,可能在于jsf划分了web 请求的生命周期。like ejb一样,web 请求也是有生命周期的。虽然,在其他的框架中,也可以看到相关的生命周期,但还是没有jsf划分的清晰。也许,这也是jsf的一大特色。
    对于生命周期的执行,所有的操作都归结到Lifecycle这个接口。接口包括了两个主要的方法:
    public abstract void execute(FacesContext context) throws FacesException;和
    public abstract void render(FacesContext context) throws FacesException;
   前者是用来执行各个生命周期的阶段,也就是除了render之外的其他五个阶段,而且是按照相应的顺序执行。而render,是执行最后一个阶段,展示页 面。可能有人不太理解,为什么不把两个方法合并成一个方法,刚开始,我也是这么认为。既然已经定义了相应的Phase,何必要把最后的render过程分 离出来。看了sun 的RI实现类,发现在render之前需要进行context.getResponseComplete()判断,可能规范中,认为render是必须要 执行的阶段,其他的阶段可以跳过,所以分离了相应的方法,同时在执行前,为了避免重复输出,需要对render过程进行特殊的处理.
   规范中定义了6个阶段,从下面的流程图中可以看到。

简单介绍一下每个阶段的工作:

RESTORE_VIEW:查找原有的view ,恢复原有的状态,如果没有,则调用ViewHandler.createView,如果为post操作,则按照顺序执行各个阶段。
否则执行RENDER_RESPONSE阶段。
APPLY_REQUEST_VALUES:读取客户端参数,处理各个组件的processDecodes方法,内部调用decode方法,由Renderer执行decode方法
PROCESS_VALIDATIONS:执行组件的processValidators方法,对于UIInput执行validate方法,用于绑定值,调用convert,和validate
UPDATE_MODEL_VALUES:执行组件的processUpdates方法,对于UIViewRoot,执行broadcastEvents和notifyPhaseListeners
所有的UIInput,执行updateModel方法。
INVOKE_APPLICATION:调 用UIViewRoot.processApplication方法。这一过程主要读取相应的action配置,如果存在action,则调用 action,也就是调用应用逻辑。在执行完相应的逻辑后,查询action是否返回值,如果有,由navigationHandler去读取下一个 view id。
RENDER_RESPONSE:展示view,调用ViewHandler.renderView,展示view。

每 个阶段定义定义的都比较清晰,有一点需要注意的是,在处理请求时,并不一定会执行每个阶段,可能其中会直接跳到最后的render response阶段。举例来说,如果validator时,存在错误信息,那么就会直接到render response阶段,而下一个阶段不会执行。

分享到:
评论

相关推荐

    JSF生命周期总结JSF生命周期总结

    JSF生命周期总结JSF生命周期总结JSF生命周期总结JSF生命周期总结JSF生命周期总结JSF生命周期总结

    JSF 生命周期 实例详解

    JSF生命周期主要分为6个阶段:恢复视图、应用请求值、过程验证、更新模型值、调用应用逻辑和渲染响应。这些阶段构成了一个处理HTTP请求的连贯流程,使得开发者能够更好地组织和管理Web应用程序的各个组件。 1. **...

    jsf生命周期学习文档

    【JSF生命周期详解】 JSF(JavaServer Faces)是一种基于Java的Web应用程序开发框架,它以组件为中心,简化了服务器端应用程序的用户界面构建。JSF的核心组成部分包括预定义的UI组件、事件驱动的编程模型以及支持第...

    JSF 学习资料大全

    **四、JSF生命周期** JSF有六个阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用和呈现响应。理解每个阶段的工作原理对于优化和调试JSF应用至关重要。 **五、JSF与MVC模式** JSF遵循Model-View-...

    IBM JSF学习资料

    JSF生命周期** 理解JSF的生命周期是关键。这包括请求处理、组件树的构建、值绑定的更新、验证、模型更新和视图渲染等步骤。在IBM的JSF学习资料中,可能会有详细的生命周期示例,帮助开发者了解何时执行特定操作。 ...

    JSF生命周期的事件处理

    ### JSF生命周期的事件处理 JavaServer Faces(简称JSF)是Java平台提供的一种用于构建企业级Web应用程序的标准框架。JSF通过定义一套简洁而强大的API来帮助开发者更轻松地开发用户界面。其中,JSF的生命周期管理...

    JSF学习资源(3本教材)

    《JSF入门》这本书可能是针对初学者的,会涵盖JSF的基本概念,如生命周期、组件体系结构、事件处理和转换验证。JSF的生命周期包括初始化、恢复视图、应用请求值、处理事件、更新模型值和渲染响应等阶段,每个阶段都...

    JSF学习

    在学习JSF的过程中,可以参考《JSF入门.pdf》这份文档,它可能会涵盖JSF的基本概念、安装配置、组件使用、数据绑定、EL表达式、生命周期管理、错误处理以及综合应用示例等内容。这份文档对于初学者来说是一份宝贵的...

    JSF学习笔记,学习jsf的入门课程

    - **JSF生命周期与组件概述**:概述JSF的生命周期各个阶段,以及如何开发自定义组件以扩展JSF的功能。 - **简单实例**:通过示例演示如何编码、解码自定义组件,以及如何使用它们。 - **自定义Renderer**:介绍...

    JSF生命周期及组件开发

    ### JSF生命周期及组件开发详解 #### 一、JSF生命周期概述 JavaServer Faces (JSF) 是一种基于Java EE标准的服务器端组件框架,用于简化企业级Web应用程序的开发。JSF提供了一种声明式的组件化编程模型,使得...

    JSF框架学习资

    1. **生命周期监听器**:`<lifecycle>`元素下的`<phase-listener>`可以添加自定义的监听器来扩展JSF生命周期的各个阶段。 2. **类型转换**:`<converter>`元素允许定义自定义的转换器,如`<converter-id>`和`...

    JSF 入门学习资料

    2. **生命周期(Life Cycle)**:JSF应用有一个明确的处理请求的生命周期,包括恢复视图、应用请求值、处理事件、更新模型值、验证和应用业务逻辑等多个阶段。 3. **表情(EL,Expression Language)**:EL是用于在...

    jsf学习必备——实用工具书

    3. **生命周期**:JSF有四个主要阶段:恢复视图、应用请求值、处理验证和更新模型值、调用后处理器。理解这些阶段对于调试和优化JSF应用至关重要。 4. **EL(Expression Language)**:JSF使用EL来访问和操作后台...

    JSF请求处理生命周期图

    JSF请求处理生命周期图

    JSF生命周期及组件开发P

    JSF生命周期是指从客户端发起请求到服务器响应的过程,它包括了五个主要阶段:恢复视图、应用请求的值、处理验证、更新模型值、调用程序和处理事件以及进行响应。 1. **恢复视图阶段**: 在这个阶段,JSF框架通过...

    JSF学习笔记 jsF

    此外,JSF还支持EL(Expression Language)用于在页面中绑定和操作数据,以及JSF的生命周期,包括恢复视图、应用请求值、处理验证、更新模型值和调用应用的后处理动作等阶段。JSF还有强大的国际化支持和错误处理机制...

    Jsf学习资料打包.zip

    3. 控制器(Controller):JSF生命周期管理用户的请求,并调用模型进行处理。每个JSF组件都有自己的生命周期,包括初始化、处理事件、更新模型值和渲染响应。 4. 组件树:JSF页面中的所有组件构成一个组件树,每个...

    jsf学习资料2

    JSF生命周期包括六个主要阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用事件和呈现响应。在这些阶段中,可以插入自定义逻辑,如在特定阶段调用Spring Bean的方法。 **4. JSF组件和事件处理** JSF...

    JSF生命周期实例,还要多长啊

    JSF生命周期是理解其工作原理的关键,它包括六个主要阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用逻辑和渲染响应。在这些阶段中,每个阶段都有特定的任务,确保用户输入被正确处理并更新到服务器端...

    JSF学习代码3

    6. **JSF生命周期**:理解JSF的生命周期对于有效编程至关重要。每个JSF请求都经历了多个阶段,包括恢复视图、应用请求值、处理验证、更新模型值和调用应用事件。在学习代码中,我们可以看到这些阶段是如何与代码交互...

Global site tag (gtag.js) - Google Analytics