第六周 javaee 作业
一、JSF 的 life cycle
1.1 JSF(JaveServer Faces)生命周期有六个阶段,这六个阶段显示了典型的一个JSF处理一个form GUI虽需要做的事情:
-
Restore View - 建立或者恢复原来的页面
-
Apply Request Values - 设置请求值为组件的提交的值
-
Process Validations - 转换和验证组建的值. 设置组建的值为组件提交的值
-
Update Model Values - 设置Backing bean的属性值为组件的值
-
Invoke Application - 执行actionListeners and actions.
-
Render Response - 返回response.
这里值得提到的一点是如果组件里面有immidiate这个attribute,对于这个组件JSF的生命周期会从Apply Request Value这一步骤直接跳到Render Response而不会进行中间的步骤
图示如下:
或者如下图:
1.2 对JavaServer Faces生命周期的进一步概述:
JavaServer Faces应用程序的生命周期从客户端对页面发出HTTP请求开始,到服务器响应页面时结束,然后转换为HTML。
生命周期可以分为两个主要阶段:执行和呈现。执行阶段进一步划分为子阶段,以支持复杂的组件树。该结构要求将组件数据转换和验证,处理组件事件,并以有序的方式将组件数据传播到bean。
JavaServer Faces页面由一棵名为view的组件树表示。在生命周期中,JavaServer Faces实现必须在考虑从先前提交的页面中保存的状态时构建视图。当客户端请求一个页面时,JavaServer Faces实现执行几个任务,例如验证视图中组件的数据输入,并将输入数据转换为在服务器端指定的类型。
JavaServer Faces实现执行所有这些任务,因为JavaServer中的一系列步骤都面临请求-响应生命周期。下图说明了这些步骤。
二、FACELETS 的 life cycle
(1) JSF规范定义了JavaServer Faces应用程序的生命周期。以下步骤为基于 Facelets 的应用程序的过程描述。
-
生命周期是在客户端使用
Facelets
创建的网页发出新请求时启动。 JSF创建一个新的组件树或javax.faces.component.UIViewRoot
并放入FacesContex
。 -
如果可用的
UIViewRoot
应用于Facelets
, 视图可以填充组件进行渲染。 -
新建的视图作为对客户端的响应而被渲染。
-
在渲染时,存储此视图的状态用于下一个请求。 存储输入组件和表单数据的状态。
-
客户端可以与视图交互,并从JSF应用程序请求另一个视图。 此时,保存的视图从存储状态恢复。
-
恢复视图再次通过JSF生命周期,如果没有验证问题,并且没有触发任何操作,最终将生成新视图或重新呈现当前视图。
-
如果请求相同的视图,则再次呈现存储的视图。
-
如果要求新视图,则继续执行步骤2。
-
将新视图作为对客户端的响应。
(2) Facelets是一种轻量级的页面声明语言,用于使用HTML样式构建JSF(JavaServer Faces)视图。
它包括以下功能:
- 它使用XHTML创建网页。
- 除了支持JavaServer Faces和JSTL标记库之外,它还支持Facelets标签库。
- 它支持表达语言(EL)。
- 它是使用组件和页面的模板。
优点
- 它通过模板和复合组件支持代码可重用性。
- 它通过定制提供组件和其他服务器端对象的功能可扩展性。
- 编译时间更快
- 它在编译时验证表达式语言。
- 高性能渲染能力。