1. Event-Driven component Model
从应用程序开发人员角度看,JSF
是一个基于事件模型的应用框架。就跟Web
应用的堂哥 — GUI
应用程序一样,页面的一个按钮触发某个事件,后台就会处理响应的事件。只不过Web
应用中,HTTP
是没记忆功能的,JSF
需要把它变得好像能够记得一样。
2. Just a Servlet
从J2EE
规范的角度看,JSF
是一个服务器端的UI
组件框架。百科上对框架的定义是“一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文
(Context)关系
”。
根据以上定义,再加上具体的实现代码,我们可以这样理解: JSF
就是一个Servlet
,一个帮我们处理了很多繁琐细节,让开发只需关注业务,UCD
只关注页面的Servlet
。
在这个Servlet
当中,它定义了如何去获取请求信息并转换为期望的对象,如何去执行相应的转换验证行为,如何去执行用户指定的事件,以及如何去输出用户期望的内容和格式。
3. Component Technology
从MVC
的角度看,JSF
是一种组件技术。不管JSF
的实现采用什么样的表示层技术,都一定要构建出组件树,然后再由组件树配合渲染器输出HTML
。
这是一种比Servlet
、JSP
更接近与Swing
的设计。
什么是组件呢?组件就只仅仅是一个实现了UIComponent
接口的Java
对象。这些组件的对象就跟Swing
树的组件一样,保存了一些属性值,一些行为。根据JSF
的规范,组件本身并不用如果该如何产生HTML
,它们都依赖于指定的渲染器来完成。