JavaServerFaces技术.ppt

上传人:牧羊曲112 文档编号:6509485 上传时间:2023-11-07 格式:PPT 页数:24 大小:261.49KB
返回 下载 相关 举报
JavaServerFaces技术.ppt_第1页
第1页 / 共24页
JavaServerFaces技术.ppt_第2页
第2页 / 共24页
JavaServerFaces技术.ppt_第3页
第3页 / 共24页
JavaServerFaces技术.ppt_第4页
第4页 / 共24页
JavaServerFaces技术.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《JavaServerFaces技术.ppt》由会员分享,可在线阅读,更多相关《JavaServerFaces技术.ppt(24页珍藏版)》请在三一办公上搜索。

1、第七章 JavaServer Faces技术,本章目录,JSF概述JSF表达式语言与标签JSF数据传递方法数据类型转换与验证消息处理与国际化支持JSF生命周期与事件处理,7.1 JSF概述,什么是JSF JSF是一种用于构建 Web 应用程序的新标准Java框架。它提供了一种以组件为中心来开发Java Web用户界面的方法,从而简化了开发。JSF为JAVA的 Web应用开发人员提供了标准的编程接口、丰富可扩展的UI组件库、事件驱动模型等一套完整的Web应用框架。通过JSF,可以在页面中轻松自如地使用WEB组件,捕获用户行为所产生的事件,执行验证,建立页面导航。,7.1 JSF概述,JSF的优势

2、UI组件(UI-component)事件驱动模式 用户界面到业务逻辑的直接映射程序员和网页设计人员的分工请求处理生命周期的多阶段划分伴随工具而生存全面的用户自定义支持Web开发的官方标准之一,7.1 JSF概述,JSF应用的组成1JSF类库及其核心控制器 javax.faces.PROJECT_STAGE Development Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet/faces/*,2.受管Bean及其配置JSF使用JavaBean 来达到程序逻辑与视图分离的目的。JSF中使用的Bean称为Managed B

3、ean(受管Bean)。简单的说,受管Bean就是一个被Java EE容器当作托管组件对待的POJO,其作用是在业务逻辑Bean及UI组件之间搭起桥梁。它根据用户请求呼叫业务逻辑Bean,或者是将业务处理结果放置其中,等待UI组件取出当中的值并将结果显示给用户。下面是一个Hello程序的受管Bean。public class UserBean private String name;public void setName(String name)this.name=name;public String getName()return name;,ManagedBean(userBean)/若不

4、指定名称,默认为类名的第一个字母小写。RequestScopedpublic class UserBean.,3.Facelets Facelets是JSF的视图页面,它是由HTML标记和JSF标签组成。在JSF1.x中,仍然是使用JSP作为视图。JSF2.0是Java EE 6规范的一部分,它提供了一些新的特性,能够帮助开发人员更加简单的开发JSF应用程序,比如,使用Facelets作为视图。和JSP一样,Facelets也是VDL(View Declaration Language 视图声明语言)的一个具体实现,它允许开发人员使用HTML模板和不同的表现技术来声明UI组件。因为Facele

5、ts视图技术是特意为JSF设计的,因此与JSP相比Facelets为JSF的开发者提供了更加简单、更加强大的编程模型。基于这个原因,JSF2.0开始Facelets将会取代JSP。4.JSF导航规则导航决定JSF页面提交后转到哪个页面。JSF有两种导航:静态导航和动态导航。静态导航是指页面导航是静态的,即单击指定按钮总是选择固定的页面来呈现响应。动态导航是根据方法的执行结果来决定响应的页面。要实现动态导航,提交按钮必须有一个方法引用。,7.1 JSF概述,模板页面与适配页面页面模板是Facelets技术的主要优势之一。使用模板可以更好地规划页面布局,简化页面开发。使用Facelets框架中的模

6、板功能时,通常会涉及到两种页面:模板页面与模板的适配页面。模板页面的特征是,在页面中使用一个或多个标签来从外部来源中注入内容。而模板的适配页面是,使用或标签引用了模板页面的页面文件。标签是一个模板标签,它将一些可以被其它模板页面所包含的内容封装起来。其template属性指定将在标签开始和结束之间显示的模板文件所在的路径。指定使用哪个模版文件后,再通过对模版文件中每个可供插入的“锚点”进行定义。在运行期,具体的内容将会被插入到 中定义的锚点位置。这个标签以外的内容将被编译器忽略,不会显示在视图中。标签和 标签相似,唯一不同的是它不忽略标签外部的内容。,7.1 JSF概述,案例7-1 在书城项目

7、使用JSFJSF属于Web层技术,类似于Struts的作用。JSF可以与其他架构整合构成应用程序。例如,书城系统采用EJB+JSF+Hibernate JPA架构。采用这样的架构,EJB项目和上一章是一样的,WAR项目要使用JSF技术,需引入JSF框架,其中控制类使用JSF受管Bean实现,视图使用JSF页面实现。本章继续上一章的设计,因此主要是在WAR项目中实现控制层和视图层。,7.2JSF表达式语言与标签,JSF表达式语言JSF EL(JSF Expression Language,JSF表达式语言)类似于JSP中的EL表达式语言,只不过它是以#表示,如#user.welcome。即以“#

8、”开始,将变量或表达式放置在“”与“”之间。变量名称可以是faces-config.xml中定义的名称或用ManagedBena标注定义的Bean,如果是Bean的话,可以通过使用.运算符来存取它的属性,例如:JSF EL的变量名也可以是JSF EL预定义的隐含对象。例如,下面的程序使用param隐含对象来获取请求参数:您好,7.2JSF表达式语言与标签,JSF的HTML标签 JSF提供的标准的HTML标签主要包括以下几类:输出(Outputs)其名称以output作为开头,用于输出指定的信息或绑定值。输入(Inputs)其名称以input作为开头,用于产生输入框。命令(Commands)其名

9、称以command作为开头,用于产生命令或链接按钮。选择(Selections)其名称以select作为开头,用于提供选项。其它 包括了form、message、messages、graphicImage等等未分类的标签。,7.2JSF表达式语言与标签,JSF核心标签核心库主要包含用于定义视图和子视图,加载资源包,向页面添加任意文本,向组件添加对象等标签。表7-2列出了核心标签。案例7-2 书城客户注册功能实现,7.3 JSF数据传递方法,从JSF页面传递参数给受管Bean使用使用直接绑定属性在请求之间传递对象在受管Bean之间通信,7.4 数据类型转换与验证,标准转换器Web应用程序与浏览器

10、之间是使用HTTP进行沟通,所有传送的数据基本上都是字符串文字,而Java应用程序本身基本上则是对象,所以对象数据必须经由转换传送给浏览器,而浏览器送来的数据也必须转换为对象才能使用。JSF定义了一系列标准的转换器(Converter)。对于基本数据类型,JSF会使用Boolean、Byte、Character、Double、Float、Integer、Long、Short等自动进行转换。对于BigDecimal、BigInteger,则会使用BigDecimal、BigInteger进行转换,对应的标签是和,它们各自提供一些简单的属性,可以在转换时指定一些转换的格式细节。,7.4 数据类型转

11、换与验证,自定义转换器除了使用标准的转换器之外,还可以通过实现javax.faces.convert.Converter接口自定义转换器,此接口有两个方法:Object getAsObject(FacesContext context,UIComponent component,String str):接收从客户端经由HTTP传来的字符串数据,转换为自定义对象。String getAsString(FacesContext context,UIComponent component,Object obj):从Bean对象得到的对象转换为字符串,以传回给客户端。,7.4 数据类型转换与验证,标准

12、验证器 数据验证是为了检验用户所输入数据的合理性。一般有两种检验:语法检验与语意检验。语法检验是要检查使用者输入的数据是否合乎我们所要求的格式,最基本的就是检查使用者是否填入了值,或值的长度、大小等等是否符合要求。语意检验是在语法检验之后,在格式符合需求之后,进一步验证使用者输入的数据语意上是否正确,例如检查使用者输入的邮件地址是否符合格式。下面的代码段中使用了必填值验证和长度验证。JSF提供了三种标准验证器:、,分别用于检验双精度数范围、长整数范围和长度。它们都具有minimum、maximum两个属性。,7.4 数据类型转换与验证,自定义验证器自定义的验证器需要实现javax.faces.

13、validator.Validator接口,该接口的validate()方法用于验证,如果验证错误,则抛出ValidatorException异常。该异常接受一个FacesMessage对象,这个对象接受三个参数,分别表示信息的严重程度(INFO、WARN、ERROR、FATAL)、信息概述与详细信息内容,这些信息将可以使用或标签显示在页面上。,7.4 数据类型转换与验证,案例7-3 为客户注册页增加验证功能,7.5 消息处理与国际化支持,消息处理在使用标准转换器或验证器时,当发生错误时,会显示默认的错误信息,这些消息可以使用或标签来显示出来,而这些默认的错误消息可以通过消息资源文件进行设置国

14、际化支持1创建消息资源文件2.如何选择语言3.设计国际化界面,7.6 JSF生命周期与事件处理,JSF生命周期 为了解决对用户处理上没有统一标准的问题,JSF引入了请求处理生命周期,从而提供了一套标准的处理过程,允许开发人员用流水线的方式来处理用户请求,这种以流水线的方式来处理用户的请求的过程,被称为JSF生命周期。在JSF中使用Lifecycle接口来表示生命周期。JSF生命周期所涉及的六个阶段:RESTORE_VIEW(恢复视图)APPLY_REQUEST_VALUES(应用请求值)PROCESS_VALIDATIONS(验证请求值)UPDATE_MODEL_VALUES(更新模型值)IN

15、VOKE_APPLICATION(调用应用)RENDER_RESPONSE(渲染响应),7.6 JSF生命周期与事件处理,Phase事件与JSF监听器 JSF的请求执行到响应,完整的过程会经过六个阶段。在每个阶段的前后会引发javax.faces.event.PhaseEvent,如果想在每个阶段的前后捕捉这个事件,以进行一些处理,则可以实现javax.faces.event.PhaseListener接口,实现该接口的类称为JSF监听器。PhaseListener有三个必须实现的方法getPhaseId()、beforePhase()与afterPhase(),其中getPhaseId()传

16、回一个PhaseId对象,代表Listener想要被通知的时机,可以设定的时机有:PhaseId.RESTORE_VIEW PhaseId.APPLY_REQUEST_VALUES PhaseId.PROCESS_VALIDATIONSPhaseId.UPDATE_MODEL_VALUES PhaseId.INVOKE_APPLICATION PhaseId.RENDER_RESPONSE PhaseId.ANY_PHASE 其中PhaseId.ANY_PHASE指的是任何的阶段转换时都进行通知;可以在beforePhase()与afterPhase()中编写阶段前后想要处理的动作。,7.6

17、JSF生命周期与事件处理,动作事件通过ActionListener来监听动作事件,例如:即时事件 所谓的即时事件(Immediate Events),是指JSF视图组件在取得请求值之后,立即处理指定的事件,而不再进行后续的转换器处理、验证器处理、更新模型值等流程。,7.6 JSF生命周期与事件处理,值变事件 如果使用者改变了JSF输入组件的值后提交表单,就会发生值变事件(ValueChangeEvent)。要处理这个事件,有两种方法。一种方法是直接设定JSF输入组件的valueChangeListener属性;另一个方法是实现javax.faces.event.ValueChangeListener接口,然后通过标签注册。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号