javaEE 第六篇博客

一、JSF:

1、基本介绍:

JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。

2、主要组件:

为了展现UI组件和管理它们的状态,操作事件、服务器端的确认和数据变换;定义页面导航;支持国际化和可访问性;提供对所有特性的可扩展性的API为了在JSP中表示UI组件和拍发组件给服务器端对象的两个JSP自定义tag库。

3、JSF应用程序组成部分:

  • 一组JSP页面
  • 一组后台bean(为在一个页面上的UI组件定义的属性和函数的JavaBean组件)
  • 应用程序配置资源文件(定义页面导航规则、配置bean和其它的自定对象,如自定义组件)
  • 部署描述文件(web.xml)
  • 一组由应用程序开发者创建的自定义对象(有可能)
  • 一些可能包含自定义组件、约束、转换器或者监听器的对象
  • 为在页面中表现自定义对象的一组自定义tag

包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。

二、Facelets:

1、基本介绍:

Facelets提供了一个强有力的模板化系统,让你使用HTML样式的模板来定义JSF的表现层,减少了组件整合进表现层时候冗余的代码,而不需要一个web容器。

2、模板框架:

在提供针对组件构建设计的模板框架方面,Facelets 与 Tapestry 类似。但是,对于具有 JSP 背景的我们来说,Facelets 看起来比 Tapestry 友好得多。它允许使用熟悉的 JSTL 样式的标记和 JSTL/JSF/JSP 样式的表达式语言。大大降低的学习曲线意味着可以更加迅速地开始开发。

Facelets 和 TapestryFacelets 与 Tapestry 很相似,可以相互比较。实际上,Tapestry 刚出现的时候,大大领先于它的时代,而 Facelets 确实借鉴了它的一些想法。但是,如果只把 Facelets 当成 JSF 版本的 Tapestry,那就错了。这两项技术是不同的。要了解关于 Tapestry 的更多内容,请参阅 Brett McLaughlin 两部分的系列 "In tune with Tapestry"。

Facelets 允许定义能够直接包含进页面或者容易地添加到 Facelet 标记库的组件集。实际上让人高兴的是在 Facelets 中定义定制标记(复合组件和类似 JSP 定制标记的标记)的迅速。使用这些组件集,Facelets 还允许定义站点模板(和更小的模板)。这与使用 Tiles 很相似,但是少了定义文件。也可以在定制 JSF 组件内部使用 Facelets,因为 Facelets API 提供了可以容易地与 JSF 组件集成的接口。

3、特性:

模板化(像 Tiles) 复合组件 定制的逻辑标记 表达式语言 对设计师友好的页面开发 创建组件库

这些特性比我想像的要更相关和统一。在这篇文章中,我讨论前两个:模板化和复合组件。我使用的 Web 应用程序基于为我的针对怀疑者的 JSF 系列开发的一个应用程序,我把它更新成使用 Facelets 视图而不是 Tiles。

Facelets 概述

对于 Facelets 可能会做的最大一个错误假设,就是它只是 Tiles 的替代品。Facelets 远不止如此:它是思考 JSF 的新方式。

选择标记虽然多数开发人员把 Facelets 用于 XHTML,实际上这个框架并不在意使用什么标记:它与 XUL (XULFaces)兼容, Kito Mann 已经用它为 JSF 中心提供 RSS。

JSP 是种生成 servlet 的模板化语言。JSP 的主体与 servlet 的 doGet() 和 doPost() 方法等价(也就是说,成为 jspService() 方法)。JSF 定制标记(例如 f:view 和 h:form)只是调用 JSF 组件来呈现它们自己的当前状态。JSF 组件模型的生命周期独立于 JSP 生成的 servlet 的生命周期。这种独立性就是混淆的来源。

与 JSP 不同,Facelets 这个模板化语言,从构建之初,就考虑了 JSF 的组件生命周期。使用 Facelets,生成的模板会构建组件树,而不是 servlet。这就允许更好的重用,因为可以把组件组合成另一个组件。

Facelets 减少了编写定制标记才能使用 JSF 的需求。Facelets 本身就可以使用 JSF 定制组件。沟通 JSF 和 Facelets 只需要很少的特殊编码:要做的全部工作就是在 Facelet 标记库文件中声明 JSF 组件。在 Facelets 模板化语言中可以直接使用 JSF 组件,不用任何额外的开发。

JSF 和 Java 服务器页面技术之间的不匹配,是 JSF 开发中的一个严重问题。问题是如何把 JSP 的动态内容集成到 JSF 基于组件的模型中。JSP 非常重视生成动态内容输出,而 JSF 需要 JSP 来协调组件模型的构建。因为这个任务超出了 JSP 原来的目的,所以产生了距离。

大多数 JSF 开发人员只是学会了一事一议地解决这类问题,但是这就像在锤子上放一个枕头,最终还会掉下来打伤脑袋。Facelets 是更加全面的解决方案:专为 JSF 组件模型度身定制的模板化语言。

参考资料:https://baike.so.com/doc/9618282-9963894.html

posted on 2018-04-15 08:43  David~Han  阅读(99)  评论(0编辑  收藏  举报

导航