一.jsf(java server faces)的运行原理(工作方式)

1.jsf应用是事件驱动的,当一个事件发生时(比如用户单击一个按钮),事件通知通过HTTP发往服务器,服务器端使用叫做FacesServlet的特殊servlet处理该通知,web容器里每一个jsf应用都有它自己的FacesServlet;

在后台,每一个jsf请求都触发了3件事情:

1)FacesServlet创建FacesContext(该对象中包含Web容器传给FacesServlet的service方法的ServletContext,ServletRequest,ServletRespons对象,在处理过程中主要就是修改这个FacesContext)

2)FacesServlet把控制权交给Lifecycle

3)Lifecycle分6个阶段处理FacesContext(也即jsf生命周期过程)

二.jsf生命周期过程

1. 重建视图: 建立组件树,如果是首次渲染,则组件树被重置合适的状态;如果不是首次渲染,则组件树被创建跳到响应阶段(JSF的组件树结构和DOM是一样的,只不过后者是client前者是server)。

2. 应用请求值: 树中的每个组件都能从请求参数中提取到新的值,并把值存储本地,之后处理所有与组件相关的事件进入队列,如果某个组件的immediate属性设置为true,那么验证,转换,以及与组件关联的事件在这个阶段被处理.

3. 处理验证: 组件值转换成与之相对应的数据类型。如果转换失败,这一阶段将继续完成所有剩余的转换器,验证和运行所需的检查,但在完成后,跳转到生命周期的Render Response阶段。如果验证成功,则检查组件上的required 的属性。如果该属性是必须的并且组件中输入了值,那么与之相关的验证程序运行。如果required的属性是必须但又没有输入值,这一阶段完成(所有剩余验证程序还会继续执行),然后生命周期跳跃到Render Response阶段。如果required 属性标识为false,不管组件中有没有输入值,验证过程都不会运行。

4. 更新模型: 验证组件的本地值移动到模型中,同时本地副本被丢弃。

5. 调用应用程序: 执行应用级逻辑(如事件处理程序)。

6. 呈现响应: 呈现树中的组件。后续请求和Restore View阶段保存状态信息。

原作者:liuyueyue     网址:https://www.cnblogs.com/iliuyuet/p/4215929.html

javaee 第六周作业的更多相关文章

  1. 2018-2019-1 20189221 《Linux内核原理与分析》第六周作业

    2018-2019-1 20189221 <Linux内核原理与分析>第六周作业 实验五 实验过程 将Fork函数移植到Linux的MenuOS fork()函数通过系统调用创建一个与原来 ...

  2. 201621123080《java程序设计》第六周作业总结

    201621123080<java程序设计>第六周作业总结 1. 本周学习总结 2. 书面作业 clone方法 1.1 在test1包中编写Employee类,在test2包中新建一个Te ...

  3. 2019-2020-1 20199329《Linux内核原理与分析》第六周作业

    <Linux内核原理与分析>第六周作业 一.本周内容概述: 学习系统调用的相关理论知识,并使用库函数API和C代码中嵌入汇编代码两种方式使用getpid()系统调用 学习系统调用syste ...

  4. 2020-2021-1 20209307《Linux内核原理与分析》第六周作业

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第六周作业> 这个作业的目标 & ...

  5. 1903021116—吉琛—Java第六周作业—类的定义

    项目 内容 课程班级博客链接 19信计班 这个作业要求链接 第六周作业链接 java面向对象的概念和定义 博客名称 学号-姓名-Java第六周作业-题目自拟 要求 每道题要有题目,代码(使用插入代码, ...

  6. C语言--第六周作业评分和总结(5班)

    作业链接:https://edu.cnblogs.com/campus/hljkj/CS2017-5/homework/1250 一.评分要求 要求1 完成PTA第六周所有题,若存在抄袭现象,倒扣此题 ...

  7. 1903021121—刘明伟—Java第六周作业—java类

    项目   内容 课程班级博客链接  19信计班(本) 作业要求链接 第6周作业 扩展阅读 java面向对象的概念和定义 作业要求 每道题要有题目,代码,截图(只截运行结果). 题目1: 一个Phone ...

  8. 201621123062《java程序设计》第六周作业总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰 ...

  9. 2019春第六周作业Compile Summarize

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 在这里 我在这个课程的目标是 能够熟练掌握指针的用法 这个作业在那个具体方面帮助我实现目标 对指针的使用更加得心应手 参考文献与网址 C语 ...

随机推荐

  1. [Selenium] 如何绕过 IE 的安全模式

    自从 IE7 引入 Protected Mode 以来, IE 浏览器的安全性的确得到了一定程度的提高.其原理从本质来讲,在浏览某些需要启用保护模式的页面时,会开启一个新的浏览器会话以完成任务,而此时 ...

  2. 最浅谈的SG函数

    [更新] Nim游戏的经验: 每次最多取m个——%(m+1) 阶梯nim——奇数位无视,看偶数位互相独立,成一堆一堆的石子 . . . . 既然被征召去汇总算法..那么挑个简单点的SG函数好了.. 介 ...

  3. mysql导出 数据库字典

    USE information_schema; --切记这里不能忘掉 SELECT T.TABLE_SCHEMA AS '数据库名称', T.TABLE_NAME AS '表名', T.TABLE_T ...

  4. bzoj 2836 魔法树 —— 树链剖分

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2836 树链剖分裸题: 写码五分钟,调码两小时,RE不断,狂交二十五遍,终于找到一处小细节—— ...

  5. bzoj1925地精部落——数学

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1925 真是精妙的递推式...好难想到啊: 详见这位的博客:https://www.cnblo ...

  6. bzoj4773

    矩阵乘法 ...爆零了... 想到Floyd,却不知道怎么限制点数... 其实我们只要给Floyd加一维,dp[i][j][k]表示当前走过了i个点,从j到k的最短距离,然后这样可以倍增,最后看是否有 ...

  7. CS231n 2016 通关 第二章-KNN

      课程内容全纪录: 1.讲解图像分类的难点 1.光照强度 2.主体变形 3.主体与背景咬合 4.主体与背景相接近 5.同类别间存在区别 2.KNN 1.最近邻算法 2.Knn 3.hyperpara ...

  8. python 类对象和实例对象动态添加方法

    class Person(): def __init__(self, name): self.name = name def print_name(self): print(self.name) p ...

  9. poj 3683 Priest John's Busiest Day【2-SAT+tarjan+拓扑】

    转换成2-SAT模型,建边是如果时间(i,j)冲突就连边(i,j'),其他同理 tarjan缩点,判可行性 返图拓扑,输出方案 #include<iostream> #include< ...

  10. 【UVA - 10474 】Where is the Marble?(排序)

    Where is the Marble? Descriptions: Raju and Meena love to play with Marbles. They have got a lot of ...