`

JSF定义及原理

    博客分类:
  • JSF
阅读更多

 

按照JavaServer Faces官方的定义,JSFJava Web应用的用户界面(User Interface,UI)框架。此定义有三种含义:第一,JSF是一种框架;第二,JSF的应用范围是Java Web应用;第三,JSF是专门针对应用界面编程的。所谓框架,是指软件编程的一个基础架构,是对某种类型的软件编程过程进行抽象和归纳后,形成的一套规范和方法。

JSF首次在Java Web应用编程中引入了UI组件模型和事件驱动模式。

JSF将所有的用户界面元素抽象为UI组件,是一种服务器端UI组件。

JSFUI组件,虽然从概念上只是简单地用面向对象的思想封装了Java Web应用的用户界面元素,但其意义深远,既是JSF页面可视化开发的基础,又提高了JSF应用代码的可重用性,是JSF诸多技术中一项有创新意义的技术。事实上,UI组件是JSF技术的核心,也是JSF技术最复杂的部分,但正是UI组件技术用复杂的机件处理了绝大部分繁琐的UI编程任务,程序员手下的JSF应用编程,才变得简单和轻松。

所谓事件驱动,是指在一个应用系统中,一些对象能够产生事件,而另一些对象则能够对事件作出响应。

如果说UI组件是JSF框架的核心,那么事件驱动则是让这个核心能够顺利动作起来的传动机构。Web应用建立在HTTP协议之上,本质上并非事件驱动,当用户在浏览器上点击一个超级链接时,浏览器发出的是一个HTTP请求,不是事件,而Web服务器也只是对HTTP请求作出响应,回送一个HTTP响应给浏览器,其工作原理与事件驱动模型不同。

JSFUI组件模型将UI元素对象化、组件化,为JSF的事件驱动模型奠定了基础。在JSF事件驱动模型中,某些UI组件如按钮和超级链接等是事件源,能够触发事件,另一些UI组件则是监听器,通过注册到事件源组件,来接收事件通知并做出适当的响应。整个事件处理过程非常简单,只需在JSF页面上稍加配置即可。

JSF的事件驱动模型将Java Web编程带入了一个新的阶段,与JSP不同,现在程序员不再需要显式地正理HTTP请求和响应,JSF的事件驱动模型已经封装了这些低级操作。程序员要做的只是集中精力编写事件处理例程。

JSF的定义中,JSF将自身明确定位在表示层。这种严格的限制,在表示层和业务层之间划出一条清晰的界线,有助于实现表示层与业务层的完全分离。

JSF是建立在JSP技术基础之上的,同样使用JavaBean来实现表示层和业务层的分离。这些JavaBean负责在JSF页面与真正的业务逻辑Bean之间搭起桥梁,调用业务逻辑Bean的方法执行用户请求的操作,或者查询业务数据,供JSF页面上的UI组件读取显示。JSF给予这种JavaBean一个专有名称,即Backing Bean,并且为了方便Backing Bean的管理,设计了一种称为Managed Bean的机制,以实现自动的Backing Bean实例化和初始化,并设定其作用范围。所有这些措施,都是为了强化Backing Bean的“表示层”的身份,避免与业务Bean混淆。

JSF规范本身是就是Java EE 5MVC规范,它提倡以页面组件的方式隐藏传统Web应用开发的HTTP细节,允许开发者经传统桌面编程的方式来开发Web应用。JSF通过将托管BeanManaged-Bean作用等同于控制器)的属性、方法直接绑定到页面组件的value属性或者action属性JSFStruts2的最大差别之一就是:JSFUI组件行为可以直接绑定到服务器端代码),就可以非常方便实现系统的MVC控制。

JSF并不是最早出现的MVC框架,但它是一款比较具有革命意义的MVC框架,它与Struts这种框架不同,Struts依然是基于请求――响应模型的,只是提供了更简捷的封装;而JSF则采用面向对象的事件通信机制Web编程中请求――响应模型完全被隐藏起来了。

       JSF中的UI组件可以直接绑定服务器端的托管Bean,因此绝大部分应用不再需要开发者去处理HTTP细节。通过使用UI组件可以将页面操作自动映射到托管Bean中,UI组件以事件通信的机制直接与托管Bean发交互。

       在传统的Web应用里,每个表单对应一次事件,当表单提交时触发submit事件,而单个表单域则无法单独触发事件。而JSF则允许每个表单域触发事件JSF中最常用的两类事件是:Value Change事件和Action事件

       JSF也只是一个MVC框架,它依然无法改变Web应用请求 ――响应的基本流程。因此为了让用户请求被JSF处理,JSF也提供了一个核心控制器来负责处理所有的用户请求,这就是javax.faces.webapp.FacesServlet,它就是JSF的核心控制器。FacesServlet是一个标准的Servlet

       托管BeanJSF应用中最重要的应用组件,因此开发JSF应用的重要任务就是开发托管BeanJSF框架对托管Bean没有太多额外的要求,托管Bean完全可以是普通POJOPlain Old Java Object)。在典型情况下,一个托管Bean与一个应用页面结合,托管Bean定义了与页面中UI组件关联的属性和方法。

       JSF表达式语言的形式是所有位于#号之后的一对花括号之中的字符串(“#{}”),EL对于JSF的作用非常大,它通常用来将UI绑定到托管BeanModel组件。JSF中的表达式语言通常具有延迟求值的特征,通常会等到视图显示时才对表达式语言求值,而不是在编译时求值。与JSP2Struts2EL最大的不同是,JSF中的EL不仅可以访问、输出Bean的属性,还可以更新Bean属性值(当把输入组件的值绑定到托管Bean的属性时)。

 

 

分享到:
评论
1 楼 dageda_jgw 2014-04-03  

相关推荐

    JSF运行原理(知道原理就不怕不懂使用)

    ### JSF运行原理详解 JavaServer Faces(JSF)是一种基于MVC模式的服务器端UI组件框架,用于构建企业级的Web应用。JSF通过一套完整的生命周期管理机制、丰富的组件库以及事件处理机制,简化了Java Web应用的开发...

    jsf 详细 原理介绍 内容讲解

    在本文中,我们将深入探讨JSF的核心概念、组件、上下文和生命周期,帮助初学者理解其工作原理。 1. **JSF架构**: JSF的架构围绕组件模型、事件模型和请求处理生命周期展开。核心API包括多个包,如`javax.faces`、...

    JSF工作原理 体系结构

    - **生命周期**:JSF 生命周期定义了从用户请求到响应的处理流程,包括初始化、应用请求值、处理验证、更新模型值、调用应用程序业务逻辑和渲染响应等阶段。开发者可以插入自定义的行为来影响这个过程。 3. **JSF ...

    JSF原理

    本篇文章将深入探讨JSF的基本原理,通过分析提供的源代码来帮助理解其工作方式。 首先,JSF的核心概念包括组件、事件和转换/验证。JSF组件是用户界面的基础元素,例如按钮、输入字段等。它们可以组合成更复杂的组件...

    JSF帮助文档

    JavaScript Faces (JSF) 是Java平台上用于构建企业级Web应用程序的一种服务器端的用户界面框架。...理解JSF的工作原理、生命周期以及如何利用其组件和绑定特性,是成为合格的Java开发工程师的关键技能之一。

    JSF实战(完整版)

    2. **Facelets**:JSF 2.0及更高版本中推荐的视图技术,它是一种XML基的模板语言,用于创建和组合UI组件。Facelets提供了更灵活的视图构造和模板重用能力。 3. **EL(Expression Language)**:JSF中的表达式语言,...

    编写JSF用户自定义UI组件(之五)

    8. **源码分析**:标签中提到的“源码”可能意味着博客作者会提供一些示例代码,帮助读者理解自定义组件的内部工作原理。 9. **工具支持**:JSF开发工具有助于简化组件开发,如NetBeans、Eclipse等IDE,它们提供了...

    JSF实战(中英版)

    本实战指南将深入探讨JSF的核心概念、工作原理以及实际应用。 1. **JSF概述** - JSF作为MVC(Model-View-Controller)架构的一部分,提供了模型、视图和控制器的实现,使得开发者可以专注于业务逻辑而不必过多关心...

    JSF入门及基础知识

    ### JSF入门及基础知识 #### 一、JSF概述与背景 JavaServer Faces(简称JSF)是一种基于Java EE的标准框架,旨在简化企业级Web应用的开发过程。它通过提供一套标准化的API来帮助开发者构建用户界面,尤其适用于...

    IBM JSF学习资料

    对于初学者,首先需要理解JSF的基本原理和组件体系,如`h:inputText`、`h:commandButton`等。然后,学习如何创建JSF页面,处理用户输入,以及如何与后台Bean进行数据绑定。IBM的文档通常会详细解释如何在WebSphere...

    JSF课件.ppt

    同时,通过查看和学习源码,可以深入掌握JSF的工作原理。此外,参与社区交流和讨论也是提升技能的有效途径。通过这样的学习过程,开发者可以充分利用JSF的强大功能,构建出高效、可维护的Web应用程序。

    jsf1.2

    **JSF 1.2 框架详解** ...了解和掌握JSF 1.2的原理和实践,对于理解后续版本的发展和变迁具有重要的历史意义。如果你正在或计划使用JSF进行Web开发,了解其历史背景和主要特性将有助于你更好地利用这个强大的框架。

    jsf标签官方帮助文档

    **JSF(JavaServer ...通过学习"JSF标签官方帮助文档",开发者能够深入理解JSF的工作原理,提高开发效率,创建出功能强大且易于维护的Web应用程序。这份文档对于任何想要精通JSF的开发者来说,都是宝贵的参考资料。

    JSF实例源代码下载

    在这个"JSF实例源代码下载"中,我们有机会深入学习和理解JSF的工作原理及其应用。 1. **JSF框架概述**:JSF设计的主要目标是简化服务器端的Web开发,通过提供可重用的UI组件和事件处理机制。JSF生命周期包括六步:...

    JSF 学习资料大全

    理解每个阶段的工作原理对于优化和调试JSF应用至关重要。 **五、JSF与MVC模式** JSF遵循Model-View-Controller(MVC)设计模式。模型负责业务逻辑,视图负责展示,控制器处理用户请求并协调模型和视图。JSF的组件、...

    jsf1.2 source code

    `jsf-api`包含了JSF框架的公共接口和类,这些定义了开发者如何在他们的应用程序中与JSF交互。API提供了如`UIComponent`、`FacesContext`、`PhaseListener`等核心组件和上下文对象,它们构成了JSF生命周期的基础。...

    jsf例子

    **JSF(JavaServer Faces)** 是一种Java技术,用于构建Web应用程序的用户界面。...通过深入研究和运行这个例子,学习者可以更好地理解JSF的工作原理,以及如何与其他Java EE技术(如JPA、EJB等)进行集成。

    JSF与hibernate整合的登陆

    8. **导航规则**:JSF应用中的页面跳转通常通过导航规则来定义,例如,登录成功后重定向到主页面,登录失败则显示错误消息。 9. **JSF生命周期**:了解JSF的请求处理生命周期对于理解组件如何更新和响应用户行为至...

    JSF ppt课件 java serve face

    这个“JSF ppt课件”很可能包含了这些内容的讲解,通过学习,你可以理解JSF的工作原理,掌握如何使用JSF构建高效、可维护的Web应用程序。对于Java开发者来说,熟悉JSF不仅可以提升Web开发效率,也是对Java EE平台...

Global site tag (gtag.js) - Google Analytics