3、JSF的生命周期

FacesServlet 充当用户和 JSF 应用程序之间的纽带。它在明确限定的 JSF 生命周期(规定了用户请求之间的整个事件流)的范围内工作。

a.当JSF页面上的一个事件发生时(比如:用户单击了一个按钮),事件通知通过HTTP发往服务器。服务器端使用FacesServet这个特殊的Servlet处理该通知。

b.FacesServlet一接收到用户的请求就创建一个FacesContext对象(JSF上下文,它存放了应用程序的所有数据)。在处理过程中,主要修改的就是这个FaceContext对象。

c.接着就是处理过程,处理器是一个叫作Lifecycle的对象。FacesServet把控制权转交给Lifecycle对象。该对象分6个阶段来处理FacesContext对象以生成响应,最后将响应发回客户端。

Lifecycle对象处理JSP请求所需要的一系列动作称为请求处理生命周期。过程状态图如下:

(图片转自网络)

由于请求处理生命周期里的应用请求值、处理验证、更新模型值和调用应用程序等阶段都可以在当前的请求对应的FacesContext实例中添加事件,因此,JSF实现必须在这些阶段后处理这些事件。

恢复视图:为选定的视图找到或创建组件树。一旦用户单击JSP页面上的链接或按钮,就会启动此阶段。JSF应用里的JSP页面被表示成一个组件树。JSF实现会进一步将这些组件链接到事件处理程序和验证程序,并将视图保存在FacesContext对象中,以备后面的处理过程所用。FacesContext对象包含了JSF用来管理当前会话中当前请求的GUI组件状态所需要的所有状态信息。

应用请求值:使用请求中发送来的值来更新组件树的组件值。因为请求中发送来的值都是String类型的,所以在更新组件树的组件值之前,必须将这些值转换为相应类型。这个过程也是解码。若转换有错误,这些错误将添加到FacesContext对象。

处理验证:当每个组件的本地值被更新后,Lifecycle对象都会根据这些注册组件的验证规则来验证这些值的合法性。如果输入的值不符合验证规则,就会将验证错误添加至FacesContext对象,并将组件标记为无效。JSF将转至呈现响应阶段,并显示带有验证错误消息的视图。如果没有遇到验证错误,JSF将进入下一阶段。

更新模型值:更新与组件相关的后台bean(也叫管理bean)或者模型对象的值。只有那些与组件值绑定在一起的Bean属性才会被更新。

调用应用程序:JSF控制器调用应用程序来处理应用程序级的事件,如提交一个表单。(此阶段可执行业务逻辑)

呈现响应:使用当前的显示技术(如JSP)显示选定的视图。

java jsf_JSF简单入门相关推荐

  1. Java正则表达式简单入门

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式是对字符串(包括普通字符(例如,a 到 z ...

  2. java dropwizard_Dropwizard简单入门

    其它开发库 除了Jetty.Jersey 和 Jackson,Dropwizard还包含了很多其它非常有帮助的开发库: Guava:支持不可变数据结构,提供日益丰富的Java工具类加速开发. Logb ...

  3. JAVA Bean和XML之间的相互转换 - XStream简单入门

    JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...

  4. 《Java Web开发入门很简单》学习笔记

    <Java Web开发入门很简单>学习笔记 1123 第1章 了解Java Web开发领域 Java Web主要涉及技术包括:HTML.JavaScript.CSS.JSP.Servlet ...

  5. java中logger_Java日志系统---Logger之简单入门

    Java 中自带的日志系统,今天抽空了解了一点,算是入了门,所以将自己的一些心得记录下来,以备日后查看,有兴趣的朋友,看到此文章,觉得有错误或需要添加的地方,请在下方评论留言,大家可以共同进步,谢谢: ...

  6. 【java开发系列】—— spring简单入门示例

    回顾 1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控 ...

  7. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  8. java程序员入门先学什么开发者工具

    学习java编程语言,那么开发工具是肯定少不了的,程序员入门基础中开发工具是一定要学会的,可以帮助开发者们提高开发效率.更优雅的写代码.由于开发者涉及的技术领域众多,以后端开发者的视角盘点平时可能用得 ...

  9. Java学习从入门到精通的学习建议

    想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...

最新文章

  1. CDN-502 问题排查
  2. Java程序的运行原理及JVM的启动是多线程的吗?
  3. 启明云端分享|ESP32-C3阿里云连接测试
  4. 直播马上开始│走进腾讯云物联网
  5. html5/css3响应式布局介绍
  6. C#使用HTML文件中的file文件上传,用C#代码接收上传文件
  7. Java开发以及Web 和移动程序员必须了解的10个框架
  8. 钱放在支付宝好,还是微信好,还是存在银行好?
  9. struts读常量顺序
  10. Android XML文件使用
  11. Oracle 归档开启切换和归档日志删除(单实例和RAC)
  12. 黑马程序员C++学习笔记(第二阶段核心:面向对象)(一)
  13. 博文视点大讲堂第33期——如何让你既能干得漂亮又说得清楚?
  14. The Backrooms - Level 0.2 - 我爱杏仁水
  15. 作为一名程序员未来的出路究竟在哪里?
  16. 中小学数学试卷自动生成程序-对张凯翔同学代码的评价
  17. 数字孪生:如何撑起一个万亿市场的产业变革?
  18. 字符串在html中的页面中的换行
  19. html语言编辑方法,Html双击使文字可编辑的方法
  20. 攻防世界——如来十三掌 give_you_flag

热门文章

  1. mp4转换html5,html5-video – VLC:如何从mp4转换为webm
  2. Ubuntu网络配置(NAT模式)
  3. 基层服务项目服务器一般几年,基层事业单位有5年服务期,期间可以提拔或调动吗?看完知道了!...
  4. sparkSQL操作中spark内报错“拒绝连接”解决方案
  5. 面试必备:《Java 最常见 200+ 面试题全面解析》
  6. 什么是MVC模式??
  7. html的颜色有多少种?
  8. HTML5基本结构及标签
  9. Java虚拟机:Java虚拟机编译器
  10. Linux安装SQuirreL SQL Client