JSF和Facelets学习笔记html
1. 什么是JSF?服务器
JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。它提供了一种以组件为中心的用户界面框架
(UI)构建方法,从而简化了Java服务器端应用程序的开发。因为由Java Community Process (JCP) 推进,属于Java EE 5中的技术规范,而受到了厂商的普遍支持。它是布局
一种页面表示技术。post
JSF用“组件”来组织视图,以组件为中心,例如数据表格组件,面板组件等等;学习
引入了基于组件和事件驱动的开发模式,使开发人员可使用相似于处理传统界面的方式来开发Web应用程序。提供了行为与表达的清晰分离。 不用特别的脚本语言或者ui
标记语言来链接UI组件和Web层。JSF技术API被直接分层在Servlet API的顶端。 技术为管理组件状态提供一个丰富的体系机构、处理组件数据、确认用户输入和操做事件。spa
JSF框架实际使用的不多,并且在国内相对不太流行,由于每次请求都要在服务器端重建视图绑定参数值,因此效率比较慢,而优势是组件丰富,著名的实现例子就有.net
MyFaces。3d
2. 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过程进行特殊的处理。
JSF的运行大体分为6个阶段,以下图所示:
3. 关于六个阶段的说明
4. 什么是Facelets?
Facelets 是一种以 JSF 为中心的视图技术。
Facelets 以组合为基础。一个组合定义一个 Facelets 页中的 JSF UIComponent 结构。Facelets 应用程序能够包含多个组合,这些组合在不一样的 Facelets 页中定义、做为一个应用程序运行。
Facelets 是一种相似 Tiles 的模板化框架。与 Tiles 相比,Facelets 的优点在于它预先集成了 JSF UIComponent,而且不须要 Facelets 配置文件,而 Tiles 须要 Tiles 配置文件。 在 Facelets 中能够添加 JSF 验证器和转换器。Facelets 全面支持表达式语言 (EL) 和 JavaServer Pages Standard Tag Library (JSTL)。在 Web 应用程序中使用 Facelets 的部分好处包括模板化、重用和易于开发。
默认状况下,Facelets 页为 XHTML 页。Facelets 应用程序由如下配置文件和模板文件组成。
模板文件定义 Facelets 中的布局,包含 <ui:insert/> 标记,用于指定使用模板定义 UIComponent 的 Facelets 组合的结构。
JSF 配置文件是惟一须要的配置文件;不须要 Facelets 配置文件。一个 Facelets 页是一个 XHTML 页,包括 Facelets 命名空间中定义的标记。
摘自:https://blog.csdn.net/cheayu/article/details/4426929
https://wenku.baidu.com/view/13d0045b80eb6294dc886c4f.html