文档章节

JSF---->概述

小强斋太
 小强斋太
发布于 2016/11/09 20:05
字数 2113
阅读 3
收藏 0
点赞 0
评论 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
Seam - 无缝集成 JSF,第 2 部分: 借助 Seam 进行对话

级别: 中级 Dan Allen (dan.allen@mojavelinux.com), 高级 Java 工程师, CodeRyte, Inc. 2007 年 6 月 04 日 转自:http://www.ibm.com/developerworks/cn/java/j-seam2/ 原文链接:http://......

晨曦之光
2012/03/09
0
0
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
八大优势能否助JSF统一Web开发

JSF掀起你的盖头来 JSF为什么会受到如此大的青睐,IBM,orcale,包括国内领先的中间件厂商金蝶也投以关注目光。那么它又具有哪些与众不同的优势吸引众商家投怀送抱呢?下面我们就来揭开JSF的...

晨曦之光
2012/03/09
0
0
怀疑论者的 JSF: JSF 应用程序的生命周期

级别: 中级 Rick Hightower (rhightower@arc-mind.com), CTO, ArcMind 2005 年 3 月 01 日 本系列怀疑论者的 JSF 一共包含 4 篇文章,本文是其中的第 2 篇。在本文中,Rick Hightower 对 Ja...

晨曦之光
2012/03/09
0
0
JSF伴随着Java EE 5从幕后走上前台

开发者在线 Builder.com.cn 更新时间:2008-04-22 本文关键词: 幕后 Java EE 5 JSF JAVA 三年前JSF就已经在Sun的实验室里诞生,但直到今天才伴随Java EE 5,作为规范的一部分,从幕后走上前台...

晨曦之光
2012/03/09
0
0
使用 Mashups4JSF 生成和消费 Mashup Feed

mashup 应用程序中最常见的用例之一就是以 feed(RSS 或 Atom)的形式导出应用程序的内部数据。在 Mashups4JSF 出现之前,开发人员需要从应用程序 DTO(数据传输对象)中手动生成 feed。现在...

IBMdW
2011/09/26
159
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java示例演示Functor 和monad

This article was initially an appendix in our Reactive Programming with RxJavabook. However introduction to monads, albeit very much related to reactive programming, didn't suit......

Quan全
16分钟前
0
0
微信官方jssdk Demo

1.html部分 <!DOCTYPE html><!-- saved from url=(0028){sh:$selfUrl} --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"......

koloor
19分钟前
0
0
数据库命名规范

https://www.cnblogs.com/pangguoming/p/7126512.html 摘要:当前研发工作中经常出现因数据库表、数据库表字段格式不规则而影响开发进度的问题,在后续开发使用原来数据库表时,也会因为数据...

塔塔米
20分钟前
0
0
java https 请求工具类-通用

package com.ra.common.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintW......

轻量级赤影
20分钟前
0
0
MFC界面套包BCG Pro Edition for MFC正式发布v27.3|附下载

BCGControlBar Professional Edition for MFC是MFC的一个扩展库,您可以用来构建类似于Microsoft Office 2000/XP/2003/2007/2010/2013 和 Microsoft Visual Studio-like(打印、用户定制工具......

Miss_Hello_World
20分钟前
0
0
Spring Cloud云服务 - HongHu架构common-service 项目构建过程

上一篇我们介绍了《整合spring cloud云服务架构 - HongHu云架构common-service代码结构分析》,本节我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来...

itcloud
21分钟前
0
0
Connection reset

在使用HttpClient调用后台resetful服务时,“Connection reset”是一个比较常见的问题,有同学跟我私信说被这个问题困扰很久了,今天就来分析下,希望能帮到大家。例如我们线上的网关日志就会...

夜黑人模糊灬
25分钟前
0
0
如何写PHP规范注释

所有的文档标记都是在每一行的 * 后面以@开头。如果在一段话的中间出来@的标记,这个标记将会被当做普通内容而被忽略掉。 @access 该标记用于指明关键字的存取权限:private、public或prote...

度_
26分钟前
0
0
influxDB Ppostgis

PostGis 1.需要安装postgreSQL,postgis作为插件嵌入到postgreSQL中; 2.使用zip包直接安装,需要修改 makepostgisdb_using_extensions.bat文件中的路径,用户名,密码,然后直接运行; 3.没有...

courtzjl
30分钟前
0
0
多线程Thread-多线程顺序执行

需求:现在有两个任务,任务1和任务2,任务1中有多个线程,并且任务2必须等任务1完成后才能执行。 namespace TThread{ class Program { static void Main(string[] ar...

kaixinguo314
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部