




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章JavaServerFaces技术 本章目录 JSF概述JSF表达式语言与标签JSF数据传递方法数据类型转换与验证消息处理与国际化支持JSF生命周期与事件处理 7 1JSF概述 什么是JSFJSF是一种用于构建Web应用程序的新标准Java框架 它提供了一种以组件为中心来开发JavaWeb用户界面的方法 从而简化了开发 JSF为JAVA的Web应用开发人员提供了标准的编程接口 丰富可扩展的UI组件库 事件驱动模型等一套完整的Web应用框架 通过JSF 可以在页面中轻松自如地使用WEB组件 捕获用户行为所产生的事件 执行验证 建立页面导航 7 1JSF概述 JSF的优势UI组件 UI component 事件驱动模式用户界面到业务逻辑的直接映射程序员和网页设计人员的分工请求处理生命周期的多阶段划分伴随工具而生存全面的用户自定义支持Web开发的官方标准之一 7 1JSF概述 JSF应用的组成1 JSF类库及其核心控制器javax faces PROJECT STAGEDevelopmentFacesServletjavax faces webapp FacesServlet1FacesServlet faces 2 受管Bean及其配置JSF使用JavaBean来达到程序逻辑与视图分离的目的 JSF中使用的Bean称为ManagedBean 受管Bean 简单的说 受管Bean就是一个被JavaEE容器当作托管组件对待的POJO 其作用是在业务逻辑Bean及UI组件之间搭起桥梁 它根据用户请求呼叫业务逻辑Bean 或者是将业务处理结果放置其中 等待UI组件取出当中的值并将结果显示给用户 下面是一个Hello程序的受管Bean publicclassUserBean privateStringname publicvoidsetName Stringname this name name publicStringgetName returnname ManagedBean userBean 若不指定名称 默认为类名的第一个字母小写 RequestScopedpublicclassUserBean 3 FaceletsFacelets是JSF的视图页面 它是由HTML标记和JSF标签组成 在JSF1 x中 仍然是使用JSP作为视图 JSF2 0是JavaEE6规范的一部分 它提供了一些新的特性 能够帮助开发人员更加简单的开发JSF应用程序 比如 使用Facelets作为视图 和JSP一样 Facelets也是VDL ViewDeclarationLanguage视图声明语言 的一个具体实现 它允许开发人员使用HTML模板和不同的表现技术来声明UI组件 因为Facelets视图技术是特意为JSF设计的 因此与JSP相比Facelets为JSF的开发者提供了更加简单 更加强大的编程模型 基于这个原因 JSF2 0开始Facelets将会取代JSP 4 JSF导航规则导航决定JSF页面提交后转到哪个页面 JSF有两种导航 静态导航和动态导航 静态导航是指页面导航是静态的 即单击指定按钮总是选择固定的页面来呈现响应 动态导航是根据方法的执行结果来决定响应的页面 要实现动态导航 提交按钮必须有一个方法引用 7 1JSF概述 模板页面与适配页面页面模板是Facelets技术的主要优势之一 使用模板可以更好地规划页面布局 简化页面开发 使用Facelets框架中的模板功能时 通常会涉及到两种页面 模板页面与模板的适配页面 模板页面的特征是 在页面中使用一个或多个标签来从外部来源中注入内容 而模板的适配页面是 使用或标签引用了模板页面的页面文件 标签是一个模板标签 它将一些可以被其它模板页面所包含的内容封装起来 其template属性指定将在标签开始和结束之间显示的模板文件所在的路径 指定使用哪个模版文件后 再通过对模版文件中每个可供插入的 锚点 进行定义 在运行期 具体的内容将会被插入到中定义的锚点位置 这个标签以外的内容将被编译器忽略 不会显示在视图中 标签和标签相似 唯一不同的是它不忽略标签外部的内容 7 1JSF概述 案例7 1在书城项目使用JSFJSF属于Web层技术 类似于Struts的作用 JSF可以与其他架构整合构成应用程序 例如 书城系统采用EJB JSF HibernateJPA架构 采用这样的架构 EJB项目和上一章是一样的 WAR项目要使用JSF技术 需引入JSF框架 其中控制类使用JSF受管Bean实现 视图使用JSF页面实现 本章继续上一章的设计 因此主要是在WAR项目中实现控制层和视图层 7 2JSF表达式语言与标签 JSF表达式语言JSFEL JSFExpressionLanguage JSF表达式语言 类似于JSP中的EL表达式语言 只不过它是以 表示 如 user welcome 即以 开始 将变量或表达式放置在 与 之间 变量名称可以是faces config xml中定义的名称或用 ManagedBena标注定义的Bean 如果是Bean的话 可以通过使用 运算符来存取它的属性 例如 JSFEL的变量名也可以是JSFEL预定义的隐含对象 例如 下面的程序使用param隐含对象来获取请求参数 您好 7 2JSF表达式语言与标签 JSF的HTML标签JSF提供的标准的HTML标签主要包括以下几类 输出 Outputs 其名称以output作为开头 用于输出指定的信息或绑定值 输入 Inputs 其名称以input作为开头 用于产生输入框 命令 Commands 其名称以command作为开头 用于产生命令或链接按钮 选择 Selections 其名称以select作为开头 用于提供选项 其它包括了form message messages graphicImage等等未分类的标签 7 2JSF表达式语言与标签 JSF核心标签核心库主要包含用于定义视图和子视图 加载资源包 向页面添加任意文本 向组件添加对象等标签 表7 2列出了核心标签 案例7 2书城客户注册功能实现 7 3JSF数据传递方法 从JSF页面传递参数给受管Bean使用使用直接绑定属性在请求之间传递对象在受管Bean之间通信 7 4数据类型转换与验证 标准转换器Web应用程序与浏览器之间是使用HTTP进行沟通 所有传送的数据基本上都是字符串文字 而Java应用程序本身基本上则是对象 所以对象数据必须经由转换传送给浏览器 而浏览器送来的数据也必须转换为对象才能使用 JSF定义了一系列标准的转换器 Converter 对于基本数据类型 JSF会使用Boolean Byte Character Double Float Integer Long Short等自动进行转换 对于BigDecimal BigInteger 则会使用BigDecimal BigInteger进行转换 对应的标签是和 它们各自提供一些简单的属性 可以在转换时指定一些转换的格式细节 7 4数据类型转换与验证 自定义转换器除了使用标准的转换器之外 还可以通过实现javax faces convert Converter接口自定义转换器 此接口有两个方法 ObjectgetAsObject FacesContextcontext UIComponentcomponent Stringstr 接收从客户端经由HTTP传来的字符串数据 转换为自定义对象 StringgetAsString FacesContextcontext UIComponentcomponent Objectobj 从Bean对象得到的对象转换为字符串 以传回给客户端 7 4数据类型转换与验证 标准验证器数据验证是为了检验用户所输入数据的合理性 一般有两种检验 语法检验与语意检验 语法检验是要检查使用者输入的数据是否合乎我们所要求的格式 最基本的就是检查使用者是否填入了值 或值的长度 大小等等是否符合要求 语意检验是在语法检验之后 在格式符合需求之后 进一步验证使用者输入的数据语意上是否正确 例如检查使用者输入的邮件地址是否符合格式 下面的代码段中使用了必填值验证和长度验证 JSF提供了三种标准验证器 分别用于检验双精度数范围 长整数范围和长度 它们都具有minimum maximum两个属性 7 4数据类型转换与验证 自定义验证器自定义的验证器需要实现javax faces validator Validator接口 该接口的validate 方法用于验证 如果验证错误 则抛出ValidatorException异常 该异常接受一个FacesMessage对象 这个对象接受三个参数 分别表示信息的严重程度 INFO WARN ERROR FATAL 信息概述与详细信息内容 这些信息将可以使用或标签显示在页面上 7 4数据类型转换与验证 案例7 3为客户注册页增加验证功能 7 5消息处理与国际化支持 消息处理在使用标准转换器或验证器时 当发生错误时 会显示默认的错误信息 这些消息可以使用或标签来显示出来 而这些默认的错误消息可以通过消息资源文件进行设置国际化支持1 创建消息资源文件2 如何选择语言3 设计国际化界面 7 6JSF生命周期与事件处理 JSF生命周期为了解决对用户处理上没有统一标准的问题 JSF引入了请求处理生命周期 从而提供了一套标准的处理过程 允许开发人员用流水线的方式来处理用户请求 这种以流水线的方式来处理用户的请求的过程 被称为JSF生命周期 在JSF中使用Lifecycle接口来表示生命周期 JSF生命周期所涉及的六个阶段 RESTORE VIEW 恢复视图 APPLY REQUEST VALUES 应用请求值 PROCESS VALIDATIONS 验证请求值 UPDATE MODEL VALUES 更新模型值 INVOKE APPLICATION 调用应用 RENDER RESPONSE 渲染响应 7 6JSF生命周期与事件处理 Phase事件与JSF监听器JSF的请求执行到响应 完整的过程会经过六个阶段 在每个阶段的前后会引发javax faces event PhaseEvent 如果想在每个阶段的前后捕捉这个事件 以进行一些处理 则可以实现javax faces event PhaseListener接口 实现该接口的类称为JSF监听器 PhaseListener有三个必须实现的方法getPhaseId beforePhase 与afterPhase 其中getPhaseId 传回一个PhaseId对象 代表Listener想要被通知的时机 可以设定的时机有 PhaseId RESTORE VIEWPhaseId APPLY REQUEST VALUESPhaseId PROCESS VALIDATIONSPhaseId UPDATE MODEL VALUESPhaseId INVOKE APPLICATIONPhaseId RENDER RESPONSEPhaseId ANY PHASE其中PhaseId ANY PHASE指的是任何的阶段转换时都进行通知 可以在beforePhase 与afterPhase 中编写阶段前后想要处理的动作 7 6JSF生命周期与事件处理 动作事件通过ActionListener来监听动作事件 例如 即时事件所谓的即时事件 Im
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司组织建党节目活动方案
- 2025年智能制造与工业转型相关知识考试试卷及答案
- 2025年生物医学工程师职业资格考试题及答案
- 2025年青少年心理健康教育课程考试试题及答案
- 2025年民俗文化与社会变迁考试试题及答案
- 2025年就业指导与职业规划考试试卷及答案
- 2025年婚姻家庭咨询师职业资格考试试卷及答案
- 2025年国际贸易知识考试及其答案
- 2025年法律法规与社会责任考试试卷及答案
- 2025护理科内自查分析讨论
- 外轮理货业务基础-理货单证的制作
- 《水火箭制作》课件
- 网络安全预防电信诈骗主题班会PPT
- 农村垃圾清运投标方案
- 优秀物业管理项目评选方案
- GB/T 5470-2008塑料冲击法脆化温度的测定
- 图书管理系统毕业论文参考文献精选,参考文献
- 中国当代旧体诗选读幻灯片
- 吉林省全省市县乡镇卫生院街道社区卫生服务中心基本公共卫生服务医疗机构信息名单目录995家
- 倔强的小红军-精讲版课件
- 信息隐藏与数字水印课件(全)全书教学教程完整版电子教案最全幻灯片
评论
0/150
提交评论