文档章节

JSF---->概述

小强斋太
 小强斋太
发布于 2016/11/09 20:05
字数 2113
阅读 3
收藏 0

JavaServer Faces (JSF)是一种用于构建 Web应用程序的新标准 Java框架。它提供了一种以组件为中心来开发 Java Web用户界面的方法,从而简化了开发。
JavaServer Faces
2004年三月1.0版正式提出,清楚的将Web应用程序的开发者划分了三个角色:网页设计人员、应用程序设计人员以及UI组件开发人员。从使用的角度来看,网页设计人员与应用程序设计人员可以他们所熟悉的方式开发程序,而不用侵入彼此的工作范围,而UI组件开发人员可以独立的开发个别组件,细节的部份留给了他们来处理。
JSF
还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。
由于 JSF是通过 Java Community Process (JCP)开发的一种 Java 标准,因此开发工具供应商完全能够为 JavaServer Faces提供易于使用的、高效的可视化开发环境。

一、JSF概述

1、问题提出

传统的桌面应用的成熟设计理念逐步转移到了Web程序设计领域

Web程序设计的发展方向趋势,正由以页面为中心的设计转变为以组件设计为重点

JSF是实现这种Web应用框架之一。随着几年的发展JSF逐步从研究阶段转变到了正式使用阶段

2、Java Server Faces:

JSF 技术是构建Web应用的框架

JSF以Servlet API和JSP技术为基础,将Web应用框架开发推进了一步

JSF包括在Java EE中

3、实现JSF API举例 

SUN JSF  

RichFaces 是一个具有 Ajax 和 JSF 特性的 Web 框架。 

Apache MyFaces

4、JSF目标

 1、实现J2EE Web应用开发速度 – RAD(RapidApplication Development)

  • 拖放组件
  • 事件驱动模型
  • 消除大量手工编码

 2、超越现有Web框架

  • 将UI组件概念从传统桌面应用移植到Web
  • 保留了原有的JSP/Servlet的特性

 3、项目开发的协作分工科学合理

从不同角度提供网页设计人员、应用程序设计人员、组件开发人员解决方案,使其彼此合作又不互相影响

二、为什么要使用JSF技术?

  • 用于构建基于JavaWeb服务器应用程序的用户接口(UI)组件框架
  • 以组件为中心开发 JavaWeb 用户界面的方法,方便开发
  • 集成 MVC设计模式,确保应用程序具有高可维护性
  • 一种通过JCP(JavaCommunity Process )开发的Java 标准,开发工具提供商能为JSF提供易使用的、高效的可视化开发环境

三、什么是JSF应用?

定义了一组UI 组件和一组标准的API。

  • 所有UI 组件可直接用在网页里,且大部分组件几乎都兼容HTML form系列标记
  • API可扩充原有的标准组件,也可开发全新的组件

连接在组件上的验证器:

  • l 检验用户输入的数据,
  • l 自动将输入数据传递给应用对象

点击链接或按钮等操作将触发事件处理器:

  • l 改变其它组件的状态
  • l 运行后台程序
  • l 控制导航处理器链接显示的网页

JSF 的jar 文件

1)   jsf-api.jar:定义于JSF规范中的JSF API类。
2)   jsf-impl.jar:特定实现的JSF(不同的实现组织,包名可能不同)

3)   jstl.jar :JSTL API类。
4)   commons-digester.jar:解析xml文件的类。
5)   commons-collections.jar:提供了基于Java Collection类创建的各种类。
6)  commons-beanutils.jar:定义和访问JavaBean组件属性的应用工具。
7)   commons-logging.jar:日志工具。
8)   standard.jarJSTL的实现类。

四、JSF体系结构

JSF体系结构的优势:

  • JSF实现MVC
  • JSF是一个更完整的模型
  • JSF规定开发团队有不同的设计目标
  • 开发工具和中间件都支持JSF

JSF的MVC实现策略

 

五、JSF的组成

JSF是一种WEB应用,包含:

  • 一个在页面上呈现UI组件的自定义标签库
  • 一个描述事件处理器、验证器和自定义动作的标签库
  • 提供服务器端状态对象的UI组件
  • 定义UI组件的属性和功能的Backingbeans
  • 验证器、转换器、事件监听器和事件处理器
  • 一个应用资源配置文件,用来配置应用资源

六、JSF的UI组件库

 Tag Library Documentation

HTML组件库   映射标准的HTML输入元素

<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

Core库       辅助常见的应用程序开发任务(如验证/转换数据、事件处理等)

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

七、JSF的标准请求处理生命周期

FacesServlet充当用户和 JSF应用程序之间的纽带。它在明确限定的 JSF 生命周期(规定了用户请求之间的整个事件流)的范围内工作。
1
JSF页面上的一个事件发生时(比如:用户单击了一个按钮),事件通知通过HTTP发往服务器。服务器端使用FacesServet这个特殊的Servlet处理该通知。
2
FacesServlet一接收到用户的请求就创建一个FacesContext对象(JSF上下文,它存放了应用程序的所有数据)。在处理过程中,主要修改的就是这个FaceContext对象。
3
接着就是处理过程,处理器是一个叫作Lifecycle的对象。FacesServet把控制权转交给Lifecycle对象。该对象分6个阶段来处理FacesContext对象以生成响应,最后将响应发回客户端。

1、生命周期处理请求的两种类型:

initial请求

处理Initial请求时,用户第一次访问页面时处理,由于用户没有输入或动作,所以只执行重建视图和呈现响应阶段用户第一次访问页面时处理,由于用户没有输入或动作,所以只执行重建视图和呈现响应阶段

postback请求 

处理postback请求时,即在提交输入时执行,将涉及所有6个阶段任务。将执行所有阶段。

2、JSF标准请求处理生命周期的六个阶段:

   1、恢复视图(Restore View)

    为选定的视图找到或创建组件树。 一旦用户单击JSP页面上的链接或按钮,就会启动此阶段。JSF应用里的JSP页面被表示成一个组件树。JSF实现会进一步将这些组件链接到事件处理程序和验证程序,并将视图保存在FacesContext对象中,以备后面的处理过程所用。FacesContext对象包含了JSF用来管理当前会话中当前请求的GUI组件状态所需要的所有状态信息。

   2、应用请求值(Apply Request values)

使用请求中发送来的值来更新组件树的组件值。因为请求中发送来的值都是String类型的,所以在更新组件树的组件值之前,必须将这些值转换为相应类型。这个过程也是解码。若转换有错误,这些错误将添加到FacesContext对象。

   3、处理验证(Process Validations)

当每个组件的本地值被更新后,Lifecycle对象都会根据这些注册组件的验证规则来验证这些值的合法性。 
如果输入的值不符合验证规则,就会将验证错误添加至FacesContext对象,并将组件标记为无效。JSF将转至呈现响应阶段,并显示带有验证错误消息的视图。 
如果没有遇到验证错误,JSF将进入下一阶段。

   4、更新模型值(Update Model Values)

验证通过后,更新与组件相关的后台bean(也叫管理bean)或者模型对象的值。只有那些与组件值绑定在一起的Bean属性才会被更新。

   5、调用应用(Invoke Application)

对于由UICommand提交的请求如果注册了Action事件,将调用Action事件对应的事情处理方法。如提交一个表单。(此阶段可执行业务逻辑)

   6、呈现响应(Render Response)

根据最终的处理结果生成处理后的组件树视图

 

本文转载自:http://www.cnblogs.com/xqzt/archive/2012/08/20/5637237.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
私信 提问
JavaServer Faces 2.2 官方文档--生命周期主要概述

原文链接:原文点我 7.6.1 JSF生命周期概述 JSF应用的生命周期从客户端发送HTTP请求开始,当服务端响应页面生成HTML的时候,JSF应用的生命周期结束。 JSF的生命周期有两个主要的阶段:执行 ...

ryanzl
2014/06/11
0
0
Apache Tobago 4.0.0 发布,JSF 的 UI 组件

Apache Tobago 4.0.0 发布了,Tobago 项目的目的是为 JSF 和 MyFaces 提供了一组设计良好的 UI 组件。 该版本主要是修复了一些 bug 和一些其他的改进。 该更新的具体概述和迁移指南。 完整的...

周其
2017/12/13
524
7
GMaps4JSF 3.0 发布,整合JSF与Google地图

GMaps4JSF旨在整合JSF与Google地图。JSF用户可以通过使用几个简单的JSF标签构建complex StreetViewPanoramas和Maps。 GMaps4JSF是一个JSF Mashups类库,它使得JSF用户可以通过JSF很容易地构建...

oschina
2013/01/09
666
1
Mashups4JSF 0.0.2 发布

Mashups4JSF 组件通过 mashup 服务提供商提供的客户机端 API 或 REST API 与 mashup 服务交互。Mashups4JSF 为每个 mashup 服务提供商提供一个工厂集来包装已实现服务。 Mashups4JSF 0.0.2主...

红薯
2010/09/15
146
1
整合JSF与Google地图--GMaps4JSF

GMaps4JSF旨在整合JSF与Google地图。JSF用户可以通过使用几个简单的JSF标签构建complex StreetViewPanoramas和Maps。 GMaps4JSF是一个JSF Mashups类库,它使得JSF用户可以通过JSF很容易地构建...

匿名
2008/10/05
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

String转成JSON的实现

String转成JSON 这个依赖很重要,我们将围绕fastjson中的JSONObject这个类来谈转换 欢迎工作一到八年的Java工程师朋友们加入Java高级交流:854630135 本群提供免费的学习指导 架构资料 以及免...

编程SHA
13分钟前
1
0
详解Object.values(),Object.keys(),Object.entries(),Object.create(),includes()

(1)Object.keys() // 返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。 eg:var obj = {a:1,b:'gy'} Object.keys(obj) // ['a','b'] (2)...

JamesView
37分钟前
2
0
SpringBoot中Mybatis打印sql

application.properties中添加 logging.level.com.example.demo.dao=debug com.example.demo.dao 是对应xml中相应interface层...

writeademo
38分钟前
2
0
Git —— 创建版本库和提交回退版本

二、 创建版本库 版本库又叫做仓库,简单理解就是一个目录,这个目录里面所有的文件都可以被Git管理起来,每个文件的修改、删除,Git都可以跟踪,便于追踪历史与还原。找到一个合适的位置,创...

lwenhao
48分钟前
4
0
guava cache使用介绍

今天在项目中发现大量使用guava cache提供缓存,觉得不错。 jvm堆大小为5G /** * * 占用JVM内存,内部数据结构类似于ConcurrentHashMap。因为JVM堆大小的限制,guava cac...

jack_peng
52分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部