zoukankan      html  css  js  c++  java
  • JSF、facelets

    1、jsf(java sever faces)

      1.1 jsf的定义:

        jsf是一种用于构建java web应用程序的框架。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。

      1.2 主要组件:

        为了展现UI组件和管理它们的状态,操作事件、服务器端的确认和数据变换;定义页面导航;支持国际化和可访问性;提供对所有特性的可扩展性的API为了在JSP中表示UI组件和拍发组件给服务器端对象的两个JSP自定义tag库。

      1.3 技术优点:

        引入了基于组件和事件驱动的开发模式,使开发人员可以使用类似于处理传统界面的方式来开发Web应用程序。提供了行为与表达的清晰分离。 不用特别的脚本语言或者标记语言来连接UI组件和Web层。JSF技术API被直接分层在Servlet API的顶端。 技术为管理组件状态提供一个丰富的体系机构、处理组件数据、确认用户输入和操作事件。

      1.4 工作方式: 

        jsf应用是事件驱动的,当一个事件发生时(比如用户单击一个按钮),事件通知通过HTTP发往服务器,服务器端使用叫做FacesServlet的特殊servlet处理该通知,web容器里每一个jsf应用都有它自己的FacesServlet;

    在后台,每一个jsf请求都触发了3件事情:

          1.4.1 FacesServlet创建FacesContext(该对象中包含Web容器传给FacesServlet的service方法的ServletContext,ServletRequest,ServletRespons对象,在处理过程中主要就是修改这个FacesContext)

          1.4.2 FacesServlet把控制权交给Lifecycle

          1.4.3 Lifecycle分6个阶段处理FacesContext(也即jsf生命周期过程)

      1.5 生命周期:

        1.5.1. 重建视图: 建立组件树,如果是首次渲染,则组件树被重置合适的状态;如果不是首次渲染,则组件树被创建跳到响应阶段(JSF的组件树结构和DOM是一样的,只不过后者是client前者是server)。

        1.5.2. 应用请求值: 树中的每个组件都能从请求参数中提取到新的值,并把值存储本地,之后处理所有与组件相关的事件进入队列,如果某个组件的immediate属性设置为true,那么验证,转换,以及与组件关联的事件在这个阶段被处理.

        1.5.3. 处理验证: 组件值转换成与之相对应的数据类型。如果转换失败,这一阶段将继续完成所有剩余的转换器,验证和运行所需的检查,但在完成后,跳转到生命周期的Render Response阶段。如果验证成功,则检查组件上的required 的属性。如果该属性是必须的并且组件中输入了值,那么与之相关的验证程序运行。如果required的属性是必须但又没有输入值,这一阶段完成(所有剩余验证程序还会继续执行),然后生命周期跳跃到Render Response阶段。如果required 属性标识为false,不管组件中有没有输入值,验证过程都不会运行。

        1.5.4. 更新模型: 验证组件的本地值移动到模型中,同时本地副本被丢弃。

        1.5.5. 调用应用程序: 执行应用级逻辑(如事件处理程序)。

        1.5.6. 呈现响应: 呈现树中的组件。后续请求和Restore View阶段保存状态信息。

    2、facelets 

      Facelets是一种轻量级的页面声明语言,用于使用HTML样式构建JSF(JavaServer Faces)视图。

    它包括以下功能:

    • 它使用XHTML创建网页。
    • 除了支持JavaServer Faces和JSTL标记库之外,它还支持Facelets标签库。
    • 它支持表达语言(EL)。
    • 它是使用组件和页面的模板。

    优点

    • 它通过模板和复合组件支持代码可重用性。
    • 它通过定制提供组件和其他服务器端对象的功能可扩展性。
    • 编译时间更快
    • 它在编译时验证表达式语言。
    • 高性能渲染能力。

    JSF(JavaServer Faces)技术支持各种标签库,以将组件添加到网页。 为了支持JavaServer Faces标签库机制,Facelets使用XML命名空间声明。

    下表显示了Facelets支持的标签库。

    参考链接:https://baike.baidu.com/item/jsf/442519?fr=aladdin

         http://www.cnblogs.com/zgq0/p/8849106.html

  • 相关阅读:
    Mybaits 源码解析 (十二)----- Mybatis的事务如何被Spring管理?Mybatis和Spring事务中用的Connection是同一个吗?
    Mybaits 源码解析 (十一)----- @MapperScan将Mapper接口生成代理注入到Spring-静态代理和动态代理结合使用
    Mybaits 源码解析 (十)----- Spring-Mybatis框架使用与源码解析
    Mybaits 源码解析 (九)----- 一级缓存和二级缓存源码分析
    Mybaits 源码解析 (八)----- 结果集 ResultSet 自动映射成实体类对象(上篇)
    Mybaits 源码解析 (七)----- Select 语句的执行过程分析(下篇)
    Mybaits 源码解析 (六)----- Select 语句的执行过程分析(上篇)
    Mybaits 源码解析 (五)----- Mapper接口底层原理(为什么Mapper不用写实现类就能访问到数据库?)
    Mybaits 源码解析 (四)----- SqlSession的创建过程
    Mybaits 源码解析 (三)----- Mapper映射的解析过程
  • 原文地址:https://www.cnblogs.com/yxsh/p/9001296.html
Copyright © 2011-2022 走看看