Java EE开发技术课程第六周(jsf、facelets)

时间:2022-01-27 00:32:45

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

Java EE开发技术课程第六周(jsf、facelets)的更多相关文章

  1. Java EE开发技术课程第五周(Applet程序组件与AJAX技术)

    1.Applet程序组件 1.1.定义: Applet是采用Java编程语言编写的小应用程序,该程序可以包含在HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同.含有Apple ...

  2. Java EE开发技术课程第三周

    一.分析Filter例子: @WebFilter(filterName="log",urlPatterns={"/*"})//创建一个LOgFilter类pub ...

  3. Java EE开发技术课程第七周(json)

    JSON: https://baike.baidu.com/item/JSON/2462549?fr=aladdin JSON指JavaScript对象表示法(JavaScript Object No ...

  4. Java EE开发技术课程

    新的学期开始了,j2e已经上了两节课,接下来就是对该课程的一些作业以及相关的认识: 一.课程目标: Java EE是java的企业级应用,所以在我看来在学习这门课程之前肯定要对java有一个具体的认识 ...

  5. j2ee高级开发技术课程第六周

    一.jsf(java server faces)的运行原理(工作方式) 1.jsf应用是事件驱动的,当一个事件发生时(比如用户单击一个按钮),事件通知通过HTTP发往服务器,服务器端使用叫做Faces ...

  6. 《Java EE 开发技术与案例教程》 这是一本好书啊:简洁精辟(相见恨晚)

    第一章:Java EE 概述 1.get:JPA:Java Persistence API, 数据持久化API: JPA是一种ORM规范,它的实现实例:Hibernate.mybatis 2.Web ...

  7. j2ee高级开发技术课程第五周

    pplet 是一种 Java 程序.它一般运行在支持 Java 的 Web 浏览器内.因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序. 如下所示是独立的 J ...

  8. j2ee高级开发技术课程第八周

    介绍一. hashCode()方法和equal()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致,那么equal()既然已经能实现对比的功能了,为什么还要hashCode()呢? 因 ...

  9. j2ee高级开发技术课程第七周

    来源:https://baike.baidu.com/item/JSON/2462549?fr=aladdin JSON(JavaScript Object Notation, JS 对象标记) 是一 ...

随机推荐

  1. Mybatis在insert操作时返回主键

    今天在写项目的时候,遇到一个需求,就是在像数据库插入数据的时候,要保留插入数据的主键,以便后续进行级联时,可以将该主键作为另张表的外键. 但是在正常情况下我们使用插入语句返回的是int型,含义是影响该 ...

  2. poj3254 Corn Fields (状压DP)

    http://poj.org/problem?id=3254 Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissio ...

  3. [NOIP1999提高] CODEVS 1047 邮票面值设计(dfs+dp)

    dfs出邮票的各种面值,然后dp求解. ------------------------------------------------------------------------------- ...

  4. Hadoop之——又一次格式化hdfs系统的方法

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46352939 又一次格式化hdfs系统的方法: (1)查看hdfs-ste.xml ...

  5. 用PS给图标添加外发光效果

    最近在做app的时候用到了图标需要根据点击和非点击显示两种状态(原始状态和外发光状态). 如下图: 没办法,因为这是毕业设计的东西,总不能叫同事帮忙处理下.所以自己充当了回美工. 做法如下: 1.打开 ...

  6. Java温故而知新-杨辉三角形

    Java温故而知新-杨辉三角形 一. 先说需求 需求 打印输出杨辉三角形,行数可变,支持50行内的任意数. 预期结果如图所示 1 这是第几行呢,是第1 1 1 这是第几行呢,是第2 1 2 1 这是第 ...

  7. kettle基础概念的学习

    参考书籍:Pentaho Kettle Solutions中文版.由于最近不断的使用kettle,随着不断深入使用,遇到的问题越来越多,发现脑子那点货根本不够用,所以根据阅读把一些概念记录一下,方便自 ...

  8. JavaScript的DOM对象

    HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. HTML DOM 树 通过 ...

  9. CentOS 7安装配置Samba服务器(挂载共享文件夹)

    CentOS 7安装配置Samba服务器 CentOS 7下Samba服务器安装配置过程笔记. 假设我们有这样一个场景 共享名 路径 权限 SHAREDOC /smb/docs 所有人员包括来宾均可以 ...

  10. easyUi datagrid鼠标经过提示单元格内容

    此文章是基于 EasyUI+Knockout实现经典表单的查看.编辑 一. jquery.cellTip.js /** * 扩展两个方法 */ using('datagrid', function() ...