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页面导航规则,可以是隐式的,也是由用户显式的自定义。

隐式的比如:<h:commandButton value="submit" action="response">,当按下按钮,页面导航到名字为response的页面上。

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

<navigation-rule>
    <description></description
    <from-view-id></from-view-id>
    <navigation-case>
        <from-action></from-action>
        <from-outcome></from-outcome>
        <if></if>
        <to-view-id></to-view-id>
    </navigation-case>
</navigation-rule>

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值