JSF概述(JSF系列一)

1.     概述

Java Server Faces是一个针对java web 应用的UI Framework,它被设计为简化java web应用的开发和维护。JSF通过下面的方法提供易用性:

(1) 通过复用UI 组件,可以简单快速地构件UI

(2) 帮助管理UI组件的状态,这些状态可以跨越多个server requests

(3) 提供一个简单的事件模型以开发事件处理程序

(4) 允许简单地开发和复用定制组件

JSF建立了一个标准,它即可以满足偏爱工具的开发者、也可以满足喜好frameworkAPIs的开发人员的需要。

1.1  JSF解决的问题

JSF的核心架构是独立于特定的协议和标记语言的。但是它也解决了很多采用java servlet/JSPs以及HTMLweb应用开发中的很多公共问题:

(1) 跨越多个请求管理UI组件的状态

(2) 对不同的标记语言、browserclient进行封装,屏蔽掉它们的差异。

(3) 支持form 处理

(4) 提供强大的类型化事件处理模型,以允许开发独立于HTTPserver端事件处理程序(event handlers),这些事件是由client端生成的

(5) 校验request数据,并且提供适当的error reporting

(6) Enabling type conversion when migrating markup values (Strings) to and from application data objects (which are often not Strings)

(7) 处理错误和异常,用人可读的形式报告错误(Handling error and exceptions, and reporting errors in human-readable form back to the application user

(8) 处理页面导航,以响应UI事件和model interactions

1.2  JSF涉及到的角色
1.2.1  Page Authors

Page author的主要职责是为web应用创建user interface。他们必须熟悉标记语言(比如:HTML) 和脚本语言(比如:JavaScript),另外还需要了解rendering 技术(比如:Java Server Pages)

Page author的主要焦点是美工设计和“人机工程”,他们大都不熟悉程序语言(比如:java)

1.2.2  组件开发者

组件开发者的主要职责是创建可复用的UI组件,这些UI组件支持下面的功能:

(1) Convert the internal representation of the component’s properties and attributes into the appropriate markup language for pages being rendered (encoding).

(2) Convert the properties of an incoming request—parameters, headers, and cookies—into the corresponding properties and attributes of the component (decoding)

(3) Utilize request-time events to initiate visual changes in one or more components,

followed by redisplay of the current page.

(4) Support validation checks on the syntax and semantics of the representation of

this component on an incoming request, as well as conversion into the internal

form that is appropriate for this component.

(5) Saving and restoring component state across requests

1.2.3  应用开发者

应用开发者的主要职责是为web应用提供server-side功能性,他们并不直接于UI相关。应用开发者主要覆盖的职责包括:

(1) 定义/确定基于JSFweb应用所需要信息的持久存储机制(比如:在RDBMS中创建schemas)

(2) 创建相应的Java Objects表达持久存储的信息(比如:Entity EJB),并且当需要的时候调用相应的beans以执行应用数据的持久化操作。

(3) Java Objects封装引用的功能性或业务逻辑,这些Java Objects可以在web应用或非web应用中被复用(比如: Session EJB)

(4) 输出数据表达(data representation)和功能逻辑对象,这些对象将通过JSF进行利用。这一项是直接同JSF相关的,下面的一些步骤将履行这个职责:

(4.1)  以对象的形式输出user interface layer所需要的数据,这些对象可以从web tier (比如:Servlet API中的requestsession的属性) ,通过“value reference expressions”进行引用。

(4.2)  为事件提供应用级(与应用级对应的是组件级) 事件处理程序(event handlers),这些事件是在请求处理周期中(request processing lifecycle)JSF UI组件生成的,并且采用队列化的形式由JSF框架管理。

1.2.4  JSF工具提供者

工具提供者的主要职责是创建辅助JSF-based应用开发的工具。

1.2.5  JSF的实现者

JSF实现者的主要职责是提供运行时环境,以实现JSF规范的所有要求。典型情况下,JSF的实现者也是J2EE应用服务器的提供者。

1.3  JSF APIs简述
1.3.1  javax.faces

它包含了JSF APItop level classes。在这个包中最重要的类是FactoryFinder

1.3.2  javax.faces.application

它包含了连接业务逻辑对象到JSFAPI,也包含了便利的可插拔机制以管理基于JSF的应用。在这个包中主要的类是Application抽象类。

注:Application有些向某些MVC框架的Controller

1.3.3  javax.faces.component

它包含了基础的UI Component APIs

注:component和它的renderer是分离的。

1.3.4  javax.faces.component.html

它包含了每一个component + renderer联合的具体base classes(This package contains concrete base classes for each valid combination of component+ renderer)

1.3.5  javax.faces.context

它包含了定义“per-request state”信息的类和接口。这个包中的主要类是FacesContext,它是所有per-request信息的访问点,也包含了到其它几个helper classesgateway

1.3.6  javax.faces.convert

它包含了定义converters的类和接口。这个包中的主要类是Converter

1.3.7  javax.faces.el

它包含了求值(evaluating)和处理(processing)引用表达式(reference expressions)的类和接口。

1.3.8  javax.faces.lifecycle

它包含了定义生命周期管理的类和接口。这个包中的主要类是Lifecycle,它是执行“请求处理生命周期”的网关(gateway)。

1.3.9  javax.faces.event

它包含了描述“事件”和“事件监听器”的接口,以及具体的事件实现类。所有组件级的事件必须继承“FacesEvent”类,并且所有组件级的监听器(listeners)必需继承“FacesListener”类。

1.3.10  javax.faces.render

它包含了定义rendering model的接口和类。这个包的主要类是“RenderKit”,它包括了一组Renderer实例。Renderer为特定的client设备类型提供rendering能力。

1.3.11  javax.faces.validator

它包含了定义validator模型(validator model) 的接口和一些具体的validator的实现类。

1.3.12  javax.faces.webapp
  它包含了把 JSF 集成到 java web 应用的类,包括一个标准的 servlet(FacesServlet) ,针对 JSP Custom Component tags 的基类,以及 JSF core tags 的具体实现类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值