首页 > JavaServer Faces技术

JavaServer Faces技术

一、JSF是构建Java Web程序的服务器端的组件框架,包括:

1)一个API,用来表示组件及管理他们的状态;处理事件;服务器端;数据转换;定义页面导航;支持国际化和可访问性;并且提供对以上功能API的扩展。

2)一个标签库,用来把组件添加到页面,并且可以把组件与服务器端对象连接起来。

二、JSF提供了一个定义良好的编程模型以及不同的标签库,只要付出很少的努力,就可以做到:

1)创建Web页面;

2)通过组件标签把组件到Web页面;

3)绑定页面上组件到服务器端对象上;

4)重用及扩展自定义组件;

5)Save and restore application state beyond the life of server requests;

三、JSF Application

JSF应用和其他的Web应用提供的功能类似,一个典型的JSF应用包括以下部分:

1)Web页面的集合,在页面上放置了很多组件。

2)标签集合,用来把组件添加到页面上。

3)Managed Beans集合(Container管理的POJOs),这些Beans是作为页面上组件的支撑,用来描述组件的属性和功能。

4)web.xml

5)(可选)一个或多个资源配置文件,比如faces-config.xml,用来定义页面导航规则,配置Bean和自定义对象(如自定义组件)。

6)(可选)自定义对象的集合,如自定义组件,Converter,Validator,Listener等。

7)(可选)自定义标签的集合,应用在页面上表示自定义的对象。

四、JSF技术的优点

JSF技术的最大优点就是把表现层和逻辑层分开了。JSF技术中包含了Facelets技术,Facelets技术有以下优点:

1)代码可以重用和被扩展,通过组件模版和组合组件。

2)可以通过注解的方式注册一个Managed Bean作为资源提供给JSF应用。

3)最重要的,JSF提供了丰富的架构来管理组件状态,处理组件数据,验证用户输入和处理事件。

 五、JSF的UI组件模型

JSF组件包括UI组件和非UI组件,UI组件是可重用和可配置的,可以是简单的组件比如一个Button,也可以是复合组件比如由多个组件组成的Table。

JSF提供了丰富和灵活的UI组件架构,包括:

1)javax.faces.component.UIComponent类集合,定了UI组件的状态和行为;

2)一个渲染(rendering)模型,定义如何以不同方式来渲染一个组件。

3)一个转换(conversion)模型,定义如何注册Convertor到一个组件上。

4)一个事件及监听模型,定义如何处理一个组件上的事件。

5)一个验证(validation)模型,定义如何注册一个Validator到一个组件上。

六、JSF的页面导航模型

页面导航就是决定下一个显示的页面或者的视图的一系列规则。JSF页面导航规则,可以是隐式的,也是由用户显式的自定义。

隐式的比如:,当按下按钮,页面导航到名字为response的页面上。

用户自定义的导航规则是在资源配置文件中配置的,比如:faces-config.xml中就可以配置。导航规则的默认格式为:



   
   

   

       

       

       

       

   


显式导航的过程是这样的:

1)NavigationHandler 根据from-view-id选择一个与当前页匹配的规则;

2)同时匹配action和outcome,如果成功,显示to-view-id对应的页面;

3)如果同时匹配失败,直接匹配outcome,如果成功,显示to-view-id对应的页面;

4)如果匹配outcome失败,直接匹配action,如果成功,显示to-view-id对应的页面;

5)如果都失败,继续显示当前页面。

七、JSF应用的生命周期

一个JSF页面代表一个组件树,称为一个视图(view)。

JSF应用的生命周期从客户端向一个页面发起HTTP请求开始,到服务端返回一个HTML页面给客户端结束。

这个过程可以分为两个主要的阶段:执行阶段(execute)和渲染阶段(render)。执行阶段又可以进一步划分成

多个子阶段,用来支持复杂的组件树。具体来说包括以下几个子阶段:

1)重建视图阶段(Restore View);

2)应用请求值阶段(Apply Request Value);

3)处理验证阶段(Process Validation);

4)更新模型值阶段(Update Model Value);

5)触发应用阶段(Invoke Application);

6)渲染响应阶段(Render Response)。

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/winson/p/3259926.html

更多相关:

  • kuapingUI 2.2 版本发布,增加了一个比较实用的工具栏web组件,是由分享按钮组 + 联系按钮组构成,分享按钮组包含了 QQ空间、朋友圈、QQ、微信、微博等分享;联系按钮组包含了 微信、QQ、旺旺、Skype、电话等快捷沟通方式。演示地址 跨屏UI框架-响应式前端框架_基于Bootstrap的大组件UI框架​ui.kuapi...

  • 本篇文章主要介绍了vue 的keep-alive缓存功能的实现,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。#Vue 实现组件信息的缓存当我们在开发vue的项目过程中,避免不了在路由切换到其他的component再返回后该组件数据会重新加载,处理这种情况我们就需要用到keep-a...

  • 2020年Vue面试题Interview●●●●作者:@烦恼会解决烦恼vue核心知识——理论篇1、对于Vue是一套渐进式框架的理解渐进式代表的含义是:主张最少。Vue可能有些方面是不如React,不如Angular,但它是渐进的,没有强主张,你可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也可以整个用它全家桶开...

  • app.component.html

    父组件字号:{{fontSizePx}}px

    app.component.ts ...fontSizePx=12...

  • app.component.html  app.component.ts import { Component } from '@angular/core'; @Component({selector: 'a...

  • 原文出处: 韩昊    1 2 3 4 5 6 7 8 9 10 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事   谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。   转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 我保证这篇文章...

  • 原文出处: 韩昊   我保证这篇文章和你以前看过的所有文章都不同,这是 2012 年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者…… 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维...

  • 很多Linux高手都喜欢使用screen命令,screen命令可以使你轻松地使用一个终端控制其他终端。尽管screen本身是一个非常有用的工具,byobu作为screen的增强版本,比screen更加好用而且美观,并且提供有用的信息和快捷的热键。 想象一下这样一个场景:你通过Secure Shell(ssh)链接到一个服务器,并...

  • NarrowbandPrimary Synchronization Signal时域位置每1个SFN存在一个NPSSSFNSubframeSymbol长度每个SFN5最后11个symbol11个symbols频域位置NB-IOT下行带宽固定180kHz,一个PRB,12个子载波。...

  •  [h1]反斜杠只能够阻止一个字符  [h2]位于键盘的左上角,和~公用一个键。...