`
lonvea
  • 浏览: 76019 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSF生命周期简介

阅读更多

前沿:对于很多JSF初学者,甚至是有开发经验的开发者,都没有清晰的认识JSF的生命周期已经如何恰当使用JSF构架合适的项目。

 

    在此我需要首先说一下,JSF是一个优秀的框架,并且它相当的成熟,但是请你不要用斧子去切菜,很多时候你会骂“斧子”不锋利。。使用JSF要知道它适合的开发场景

 

    1)JSF不适合以页面展现为目的的web站点:如果你的项目,是一个信息系统,或者是一个合并了强大静态数据的应用系统,那么用JSF稍微有些不妥,因为JSF不能再展现上为你节约更多的人力,反而它会绑架你的思考或者设计方式。

 

    2)JSF虽然提供了强大组件,以及“承诺”的自定义组件开发,但是很多时候组件约束了你的手脚,你会逼着自己用组件去做文章,再者“自定义”组件并没有你想象的那么“温柔”反而很坎坷。。有时候你会怀念html的放荡,JS的“忠诚”。。

 

 

    3)JSF的组件,已经动态消息机制,页面流程统一管理,等等特性,其实时时在想你发出一个信号,“我适合做交互复发,操作繁多的面向用户的应用系统”。

 

 

 

    在你使用JSF之前,你需要了解下面的两种事情,它会让你在“清醒”中开发“清醒”的程序,闭着眼开发JSF,其实你在浪费自己的时间,也在浪费老板为你开出的低廉的“租金”。

 

 

    1.JSF是基于事件驱动的,首先介绍JSF的事件侦听。介绍中我仅仅给大家提供简单的场景。不过我需要首先申明,思考这些事件的时候,你最好先用C/S架构下的模式考虑她的运作模式,再用web下js调度动作的方式去认识执行过程。

 

       1)动作事件:Action Event:普通动作响应

 

          actionEvent是最普通的事件,任何command组件(button,link等,请参见UICommand)通过注册actionListener均可出发此事件侦听响应,简单说,用户有意义的操作,即可触发。


       2)即时事件:Immediate Event:立即处理,不验证/转换/更新模型值(即bean不会保存属性)

 

         即时事件,立即触发,在JSF生命周期中,让恢复试图之后,获取请求值,立即触发。验证、转化、更新模型值被略过,当然更多的情况下,你需要一个为被注册的UI组件binding到后台bean中,别忘了,你使用即时事件的初衷是什么??就是我只想让程序关注此组件,并排斥其他组件或者级联组件的操作。场景:单一表单中,使用“检测用户名是否存在”。立即时间,常用来做bean层面即时服务,以执行action为主要目的。


       3)值改变事件:Value Change Event:选择UI值改变后,级联调度.如果国际化中选择语言.

 

          值改变事件,如果一个输入(UIInput)、选择(UISelects)组件的值发生改变,将会执行的侦听。所谓的值改变,就是表单中local值和submit值发生偏移,local值就是页面渲染时上一个生命周期中传递的值,简单说就是表单中原来展示的值(server端生成的组件值,在周期中编码进去)。。submit值,就是面向用户或者操作者主动输入的客户端值。

 

          比如:表单展示时,server端为一个下拉菜单赋值为1(local值),如果用户选择了2(submit值).请你用相同的思维去考虑输入框。

 

          如果值改变,那么就会被执行,最好的场景就是:国际化中选择语言,然后把最新的语言元素,广播到整个站点。

 


       4)阶段事件:Phase Event:监听响应的JSF生命周期

 

          JSF的运行大致分为6个阶段,具体如下(JSF生命周期)。当然这类事件,可以注册到组件,但是更多的时候,用来监控站点中特殊组件的数据操作。

 

 

 

   2.JSF生命周期

 

      1)恢复视图(Restore View)
        根据请求访问的视图ID(页面地址),重建JSF 组件DOM树。如果JSF页面是第一次访问,也即是试图ID在内存中没没有存根,那么JSF会在内存中构建JSF组件的DOM树。但是组件并没有值,只是一个模子。。
     2)应用请求值(Apply Request Values)
      JSF组件获取请求中的属于自己的值,包括Local值,和submit值.同时处理转换,转换成功,更新local值(submit转换结果),当然过程没有那么简单,JSF处理器有自己的一套解码过程。
     3) 执行验证


         如果组件注册验证器,依次执行验证.


     4)更新模型值:如果所有的组件本地值转换验证等均成功,此时JSF就会根据EL处理关联的bean,并更新bean绑定值.在此处JSF会根据EL绑定加载配置的后台bean。

     5)调用应用:调用注册的侦听器,然后执行事件驱动,获取下一个视图。侦听器此时可以有效的侦听到UI组件的各项数据,事件驱动部分即action可以有效的获取被更新的后台bean数据。执行自己的业务逻辑。

 

     6)渲染响应(Render Response)
    到此请求处理结束,根据导航规则,渲染响应的页面.依次执行…

 

 

 

    在此我需要罗嗦一句,每当我看到员工把业务逻辑写在actionListener里的时候,就有点窝火。actionListener真正目的是让开发者通过获取触发事件的组件,逐末求源,级联操作其他组件(binding的使用),或者定性的操作触发事件的组件数据,listener说白了,就是处理面向UI的数据操作。从更新模型之后的binding的UI中获取三方附属数据,如触发action的组件的style,状态,国际化,http等。而不是让用来做业务处理的。action方法及事件驱动程序部分,才是用来做业务服务的,然后指定导航。。。

 

    如果谁在乱写,小心没收你的“小弟弟”。。。。。。。。。

 

 

 

 

 

 

4
1
分享到:
评论
3 楼 shiw019 2016-03-03  
   写的不错,多谢楼主
2 楼 lonvea 2015-06-14  
kongxm66 写道
就是瞎鸡-巴写,你来没收我小弟弟啊!


我去,这么多年了,竟然还有人看我的blog。太感动了。
1 楼 kongxm66 2014-09-12  
就是瞎鸡-巴写,你来没收我小弟弟啊!

相关推荐

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

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

    JSF 生命周期 实例详解

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

    JSF生命周期及组件开发

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

    jsf生命周期学习文档

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

    JSF生命周期的事件处理

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

    JSF生命周期及组件开发P

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

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

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

    jsf生命周期和一部分标签介绍

    JSF生命周期是理解其工作原理的关键,该过程分为六个阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用事件和渲染响应。 1. **恢复视图阶段(Restore View)**: 在这个阶段,JSF框架试图找到与当前...

    JSF请求处理生命周期图

    JSF请求处理生命周期图

    JSF 应用程序的生命周期.rar

    总的来说,JSF生命周期提供了一种有序的方式来处理Web应用程序的用户交互,简化了开发流程,同时也提供了强大的功能和灵活性。开发者可以根据需求利用JSF的生命周期特性,优化应用程序的性能和用户体验。

    JSF简介(xiaobo原创视频).part2.rar

    由于JSF的资源较少,继[JSF视频轻松搞定]后,现在接着发布xiaobo原创视频,希望大家多多支持! 有两部分,这是第一部分,第2个压缩包,共4个压缩包!~

    jsf语法及配置大全

    JSF简介 JSF基础 JSF标签 JSF应用程序 JSF生命周期 JSF配置大全

    J2EE JSF 简介

    对于后续请求,控制器更新模型数据,并允许开发人员通过编程方式在运行时访问整个JSF生命周期,从而对应用程序的行为进行高度控制。 #### 4. JavaServer Faces的用户界面组件 JSF的强大之处在于其用户界面组件模型...

    jsf例子\监听器 例子

    4. **事件处理与JSF生命周期的关系**: 在JSF生命周期的不同阶段,事件被处理并传播给已注册的监听器。监听器可以决定是否中断或继续生命周期。例如,如果监听器在处理值变化事件时发现错误,它可以调用`...

    jsf简介-简约介绍+实例代码

    总的来说,JSF通过组件模型、事件处理和生命周期管理,提供了高效开发交互式Web应用程序的途径。虽然学习曲线可能相对较陡,尤其是对于组件和事件处理的理解,但一旦掌握,JSF能够显著提高开发效率,帮助构建健壮、...

    JSF基础教程 简体中文

    要开发 JSF 组件,您需要更深入了解 JSF 的一些处理细节,包括了 JSF 生命周期以及 JSF 框架。 o JSF 生命周期 o 概述自订组件 简单实例 在不考虑组件有子组件的情况下,这边以实际的一个例子来说明开发组件的过程...

    jsf1.2 source code

    API提供了如`UIComponent`、`FacesContext`、`PhaseListener`等核心组件和上下文对象,它们构成了JSF生命周期的基础。开发者可以使用这些接口来创建自定义组件,实现监听器,以及处理请求和响应。 ### 2. `jsf-ri` ...

    jsf的必读教科书

    本篇文章将基于《JavaServer Faces Specification Version 2.2》文档的关键信息,深入解读JSF 2.2的核心概念、生命周期以及一些关键特性。 #### 二、JSF 2.2 版本概述 JSF 2.2 版本是由Oracle公司发布的一个重要...

    精通JSF中文教程精通JSF中文教程

    通过深入学习本教程,您将掌握JSF的基础知识,包括组件使用、Managed Beans的创建、EL表达式的运用以及JSF生命周期的理解。结合实际项目实践,您将能够熟练运用JSF来构建高效、稳定的Web应用程序。

    jsf demo 各种实例

    **JSF生命周期** 包含6个主要阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用业务逻辑和呈现响应。在每个阶段,JSF处理用户的输入、执行验证、更新模型并生成响应。 **JSF示例** 在"jsfdemo"这个...

Global site tag (gtag.js) - Google Analytics