jsf生命周期

合集下载

JSF架构图

JSF架构图

(4)、应用程序架构师:负责设计Web应用程序,确保应用程序的可扩展性,
定义页面导航,配置Bean和向应用程序注册对象。 (5)、工具供应商:提供利用JSF技术来使构建服务器端用户界面更加容易的 工具。
IC-MSP V1.0
JSF举例:JSP页面1
<%@page contentType="text/html; charset=GB2312"%> <%@page errorPage="login_error.jsp"%> <%@taglib uri="/jsf/core" prefix="f"%> <%@taglib uri="/jsf/html" prefix="h"%> <%@taglib uri="/jstl/core" prefix="c"%> <html> <head> <title>login</title> </head> <f:view> <body bgcolor="#c0c0c0"> <h1 align="center"> <font color="#808000">西安英泰移动通信学院管理系统</font> </h1> <center> <h:graphicImage width="1000" height="120" url="/images/IMTI_LOGO.jpg"/> </center> <h:form id="aa" > <center> <h:panelGrid columns="3" border="2" cellspacing="0" cellpadding="0" width="160" bgcolor="#C0C0C0" columnClasses="list-column-center"> <h:graphicImage width="100" height="25" url="/images/Woa16.jpg"/> <h:graphicImage width="130" height="25" url="/images/Woa16.jpg"/> <h:graphicImage width="100" height="25" url="/images/Woa16.jpg"/> <h:outputLabel for="username"> <h:outputText value="用户帐号:" styleClass=" list-column-right"/> </h:outputLabel>

JSF 项目

JSF 项目

一、项目背景作为下一代、高性能的军用飞行器,JSF (联合攻击机,定型后称为F-35 )项目是美国军方历史上最大的军火采购项目,总价值大约$7500 ~10000 亿美元。

五角大楼打算在波音和洛克希德·马丁之间选择,1996 年五角大楼分别拨给波音和洛克希德·马丁公司一笔投资,要求研制下一代中档战斗机,并希望在两个竞争者之间做最后的选择。

2001 年11 月 2 日揭晓,由以洛克希德·马丁公司为首的联盟中标。

二、项目介绍JSF 将是现有战机F-16 、F-18 等战机的替代型号,属于下一代、多角色的先进的军用战斗机,可用于美国空军、海军和海军陆战队,英国国防部以及世界上其它美国的盟友。

一批5000 架的庞大的机队将由世界上最好的飞机制造商的联合体来设计和制造。

对这个机队的使用和维护服务将一直延续到21 世纪中叶。

美国国防部对JSF 的要求是“一个型号,三种版本”,即要适合空军、海军和海军陆战队使用:常规型号(空军)航母型号(海军)短道起飞(海军陆战队)由于这三种用途的JSF 型号将建立在同一个飞机主体上。

一个公共的数字化平台将是极其关键的,它要能够在所有的变形数据中集合和充分利用系统的共性数据,以降低成本和节省设计制造时间。

此外,使用一个公共的数字化平台也能够让JSF 的团队建立一个客户化的系统,去满足那些打算选用JSF 的各个国家和地区的不同的要求。

JSF 机型的采购使用情况,美国以及英国军方已经决定采购约3000 架,美国的盟友(包括北约、加、澳、沙特、日、韩、新、马、泰、印尼、巴、台湾等)决定或有意向采购2000 ~3000 架。

JSF 项目由洛克西德·马丁、诺瑟若普·格鲁门及英国宇航公司共同承担,并联合近30 个国家约30 家供应商共同生产制造。

总体情况是:主要的承包商(“ Team JSF” ):洛克西德·马丁、诺瑟若普·格鲁门及英国宇航公司;第二级转包商:罗尔思·罗依斯、普惠、霍尼韦尔;第二级转包商:大约24 个国家的供应商;初期的客户:美国空军、海军和海军陆战队以及英国军方;其余客户:28 到30 个国家的政府或军方。

J2EE开发框架Javaserver FacesJSF个人经验

J2EE开发框架Javaserver FacesJSF个人经验

焉萎Ⅵ潞器-㈦J2EE开发框架Javaser ver Faces(J SF)个人经验张文(同济大学软件学院上海200092)[摘要]J S F这项技术是由C r ai g M c C l an ahan为主设计的,而c r ai g M c C l an ahan i E是如日中天的St r ut s的主设计师(J avaJ k.都知道),故JSF大体上与St r ut s一脉相承。

St r ut s是典型的f r a m ew or k,侧重架构设计,而JSF则侧重于JSP的快速开发功能.[关键词]J a vaSer ver F a ces(JS F)M V C M ana ged B eans中图分类号:TP3文献标识码:A文章编号:1671--7597(2008)1110044--01参加J2E E的项目开发也有3年了,其表现层的框架使用过S t r ut s和JSF,目前主要述是使用JSF为丰,因为JSF在许多方面相对于St r ut s还是有很多的优势的。

总结这几年的开发经验再结合网上一些朋友对JsF一些评价,我对JSF这项技术进行一些分析和点评。

J SF这项技术是由C r ai g M cC l anah an为主设计的,而C r ai gM c C l a nahan正是如日中天的St r ut s的主设计师(Java人都知道),故J SF大体上与st r u t s一脉相承。

以笔者初试的体验,St r ut s是典型的f r am ew or k。

侧誊架构设计,而JsF则侧重于JSP的快速开发功能。

一、什么是M V CM ode l—V i ew-C ont r ol l e r(M vc)模式的目的是从数据表示(V i ew)中将数据(即M ode l)分离出来。

如果应用程序有多种表示,可以仅替换视图层而重用控制器和模型代码。

类似的,如果需要改变模型,可以在很大程度上不改变视图层。

如何进行优秀的代码的生命周期管理

如何进行优秀的代码的生命周期管理

如何进行优秀的代码的生命周期管理优秀的代码生命周期管理是保障软件开发质量和效率的关键。

它是软件开发过程中的关键环节,它指导了软件开发人员在整个开发周期中应该执行的任务,帮助开发团队在开发过程中保持一致和高效。

在今天的软件开发领域中,有效的代码生命周期管理实践已被广泛采用。

因此,本文将通过以下几点来讨论如何进行优秀的代码的生命周期管理。

一、代码仓库管理代码仓库扮演了代码生命周期的核心角色,它不仅可以管理代码,还可以使得团队协作更加有效和高效。

代码仓库的选择要考虑到易用性、安全性、可扩展性等方面,如GitHub、GitLab等。

借助这些工具,团队可以共享代码,通过版本控制来提高代码质量,提高团队的协作能力。

同时,使用合适的代码管理工具可以让团队对代码库进行备份、版本管理和追踪功能的操作,方便团队成员之间的相互协作和交流。

二、代码规范与代码审查代码规范是指在项目开发期间制定通用的编程约定,包括名称、注释、间距和命名规则等,以便代码更加易读、易理解、易于维护。

通过建立和维护代码规范,可以减少编程错误,以及提高代码的易读性和可维护性。

代码审查除了可以发现代码中的缺陷和潜在问题,也可以帮助团队成员熟悉团队内部编程习惯,促进团队的协作,同时也可以推动开发人员发现和共享最佳实践。

三、单元测试与集成测试单元测试是指程序员编写的单元测试代码来测试每个程序单元的正确性,以确保代码的可靠性和正确性。

集成测试是指直接在整个系统中运行代码来测试软件系统的正确性。

这两个测试类型可以帮助团队发现缺陷,及时修复问题,提高代码质量和可靠性。

同时,也可以提高团队成员对整个项目的理解和认识。

四、持续集成和自动化测试持续集成是指将代码及时集成到主干分支,并进行构建、测试和验证,以实现快速反馈和回归测试。

自动化测试是指利用自动化程序运行测试用例来检查代码的质量和正确性。

持续集成和自动化测试是保障代码质量和速度的有效手段,它们可以帮助团队快速识别和修复错误,提高项目的整体效率。

JSF的优势及未来发展趋势

JSF的优势及未来发展趋势

JSF英文全称 JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。

它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化开发,也是Sun精心打造的一项技术。

JSF优势之一:UI组件(UI-component)UI组件(UI-component)一直是桌面程序的专利,web程序中,虽然HTML 定义了基本的UI标签,但要使这些UI标签像UI组件那样工作,还需要很多代码片断来处理数据及其表现形式,而且有效地组织这些代码片断使其协调一致也是一件繁琐的工作。

JSF的UI组件是真正意义上的UI组件,能极大地简化程序员的工作,例如,在页面上放置一个文本输入框,这个输入框立即具备了数据填充、界面更新、事件侦听、动作触发、有效性检查和类型转换的功能。

更为重要的是,程序员只需根据业务逻辑编写核心业务代码,JSF会保证代码在合适的时候被执行,完全不用考虑代码与代码之间该如何来配合。

JSF优势之二:事件驱动模式事件是面向对象方法的重要组成部分,对象之间通过事件进行沟通和交流,使得一个或多个对象能够对另一个对象的行为作出响应,共同合作去完成一项业务逻辑。

通常,编写Web程序时,程序员要为对象之间的沟通设计机制,编写代码。

虽然沟通的内容属于业务逻辑,但沟通的机制显然与业务没有太大关系,程序员因此为业务逻辑之外的功能浪费了时间。

JSF改变了这种状况。

JSF的事件和侦听模式与大家熟悉的Javabean的事件模式类似,有Java基础的程序员并不需要学习任何新的东西。

JSF的UI组件可以产生事件,例如,当页面上一个文本输入框的内容被修改时,会发出一个“值改变事件”。

另一个对象如果对“值改变事件”感兴趣,只需注册为该对象的侦听者,并编写处理例程,即可命令JSF在事件发生时自动调用处理例程。

JSF做了所有该做的事,留给程序员的只有业务逻辑代码的编写。

JSF优势之三:用户界面到业务逻辑的直接映射举个例子,表单提交是Web编程最常见的任务,也是最复杂的任务之一。

JSF导航,转换器,验证器,错误处理

JSF导航,转换器,验证器,错误处理

转换日期:<f:convertDateTime>其中的pattern属性用 于指定日期的样式,例如:yyyy-mm-dd。 转换数字:<f:number> 注意:所有转换的错误信息都保存在FacesContext对象 中,通过<f:message>可输出错误信息。
JSF自定义转换器 自定义转换器
需要实现javax.faces.convert.Converter接口, getAsObject方法用于将获取的请求参数转换成对 应的对象,getAsString用于将对象转换成对应的 字符串输出。 部署convert通过在faces-config中添加 convert faces-config <converter>元素来实现,其子节点<converterid>指定转换器的名称 <converter-class>指定转换器对应的类型 为组件指定转换器: 通过子元素<f:convert>来实现,其属性convertId 用于指定部署的convert的id。
<navigation-rule>元素
<from-view-id>规定了来源页面. 例如: <from-view-id>/index.jsp</form-view-id> <from-view-id>/*</form-view-id> <from-view-id>/pages/*</form-view-id> <from-view-id>*</form-view-id> 其中的*代表了所有的view. 在一个<navigation-rule>中只能配置一个<fromview-id>元素.

jsfl使用手册

jsfl使用手册

jsfl使用手册摘要:1.JavaServer Faces (JSF) 简介2.JSF 开发环境搭建3.JSF 基本组件4.JSF 数据绑定5.JSF 事件处理6.JSF 验证7.JSF 导航8.JSF 高级特性9.JSF 实践建议与最佳实践10.JSF 开发常见问题及解决方案正文:JavaServer Faces (JSF) 是一个用于构建Java 企业级应用程序用户界面的标准框架。

它将用户界面与后端逻辑分离,使开发人员可以更专注于业务逻辑的实现。

本手册将介绍如何使用JSF 进行开发。

1.JSF 开发环境搭建要开始使用JSF,首先需要搭建开发环境。

这包括安装JDK、配置环境变量、安装并配置Java 开发工具包(JDK) 以及安装和配置JSF 支持的服务器,如GlassFish 或WildFly。

2.JSF 基本组件JSF 提供了一组基本组件,用于构建用户界面。

这些组件包括表单、文本框、按钮、标签等。

通过使用这些组件,开发人员可以轻松地构建复杂的用户界面。

3.JSF 数据绑定JSF 数据绑定功能允许将用户界面与后端数据模型进行关联。

开发人员只需在XML 文件中定义数据模型,JSF 引擎将自动完成数据绑定。

数据绑定支持一对多、多对多等复杂关系。

4.JSF 事件处理JSF 提供了事件处理机制,允许开发人员监听用户操作并作出相应的响应。

例如,当用户点击按钮时,可以触发一个事件处理器,执行相应的操作。

5.JSF 验证JSF 提供了验证功能,确保用户输入的数据满足一定的约束条件。

例如,非空验证、最小长度验证等。

验证失败时,JSF 引擎会显示友好的错误提示。

6.JSF 导航JSF 导航功能允许开发人员构建多页面应用程序。

通过配置导航规则,可以实现页面间的跳转。

此外,JSF 还支持基于请求参数的导航。

7.JSF 高级特性JSF 提供了许多高级特性,如数据表格、表单提交、国际化支持等。

这些特性可以帮助开发人员构建更加丰富和灵活的应用程序。

JSF2.0系列简介

JSF2.0系列简介

第1章Javaserver Faces 2.0重要新功能以及相关改进简介(系列之一)关键字: 新功能JSF 2.0的最终规范也已经发布了有近一个月了,在近期试用了一些新功能和特性,带来了很多漂亮的特性和愉快的体验。

试用之余,迫不及待的希望与众多开发工程师们分享JSF 2.0带来的这些改变,或者说给我们开发带来的便利以及思想上的变革。

自从JSF 2.0立项起,就一直关注他,除了他承诺的那些技术和思想上的先进性,更多的原因是由于他为适应Web 2.0开发应用而提出的简化开发流程,提供灵活便捷的组件开发模式;或者可以说是由于他承诺在提高开发人员效率方面的努力。

在从Mojarra项目获取beta版实现并试用后,我非常兴奋,JSF 2.0的专家组很好的完成了他们的承诺,并有很多超出预期的惊喜。

不废话了,现在就从开发者的角度列出我认为全新引入的最重要的两个特性:1、 Facelets界面组件模型在JSF 2.0中引入了全新的界面表现模型Facelets,可以方便的实现自有组件定制和页面模版化。

既强化了JSF提出以来的组件式开发思想,又简化了自有组件的开发。

从Tapestry吸收来的模版方式不仅可以让开发工程师像搭积木一样组合一个页面,更可以搭好架子后只在相关页面中只修改需要改变的部分。

Facelets还有一大好处,就是将所有java代码从页面标签中移出,让分工更明细了,分工合作本来就是人类发展的一大基石,在这儿也体现了。

采用全新界面模型后还带来了些辅助功能和好处,其一就是性能的大幅度提升,由于Facelets采用W3C的xhtml规范,是一个严格的xml规范,组件树渲染不再需要如jsp一样编译成class文件后再运行,可以直接渲染,而大大提升了渲染速度,整体性能比jsp应该会提升不少。

另外为了支持自有组件开发,JSF 2.0加入了一个resources约定,将自己创建的组件放于此目录下,省掉了xml配置文件中的说明。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JSF生命周期
1概述
JSF是基于事件驱动的,首先介绍JSF的事件侦听。

介绍中我仅仅给大家提供简单的场景。

不过我需要首先申明,思考这些事件的时候,你最好先用C/S架构下的模式考虑她的运作模式,再用web下js调度动作的方式去认识执行过程。

2事件类型
2.1 动作事件:Action Event
普通动作响应
actionEvent是最普通的事件,任何command组件(button,link等,请参见UICommand)通过注册actionListener均可出发此事件侦听响应,简单说,用户有意义的操作,即可触发。

2.2 即时事件:Immediate Event
立即处理,不验证/转换/更新模型值(即bean不会保存属性)
即时事件,立即触发,在JSF生命周期中,让恢复试图之后,获取请求值,立即触发。

验证、转化、更新模型值被略过,当然更多的情况下,你需要一个为被注册的UI组件binding到后台bean中,别忘了,你使用即时事件的初衷是什么??就是我只想让程序关注此组件,并排斥其他组件或者级联组件的操作。

场景:单一表单中,使用“检测用户名是否存在”。

立即时间,常用来做bean层面即时服务,以执行action为主要目的。

2.3 值改变事件:Value Change Event
选择UI值改变后,级联调度.如果国际化中选择语言.
值改变事件,如果一个输入(UIInput)、选择(UISelects)组件的值发生改变,将会执行的侦听。

所谓的值改变,就是表单中local值和submit值发生偏移,
local值就是页面渲染时上一个生命周期中传递的值,简单说就是表单中原来展示的值(server端生成的组件值,在周期中编码进去)。

submit值,就是面向用户或者操作者主动输入的客户端值。

比如:表单展示时,server端为一个下拉菜单赋值为1(local值),如果用户选择了2(submit值).请你用相同的思维去考虑输入框。

如果值改变,那么就会被执行,最好的场景就是:国际化中选择语言,然后把最新的语言元素,广播到整个站点。

3.4 阶段事件:Phase Event
监听响应的JSF生命周期
JSF的运行大致分为6个阶段,具体如下(JSF生命周期)。

当然这类事件,可以注册到组件,但是更多的时候,用来监控站点中特殊组件的数据操作。

3生命周期
3.1 恢复视图(Restore View)
视图表示组成特定页面的所有组件。

它被保存在客户端(通常存储在隐藏字段中)或服务器中(通常在会话中)。

根据请求访问的视图ID(页面地址),重建JSF 组件DOM树。

如果JSF页面是第一次访问,也即是试图ID在内存中没有存根,那么JSF会在内存中构建JSF组件的DOM树。

恢复视图也确保了组件的值,与树中的组件相关联的事件监听器、验证器或者转换器,都被恢复。

3.2 应用请求值(Apply Request Values)
JSF组件获取请求中的属于自己的值,包括Local值和submit值.同时处理转换,
转换成功,更新local值(submit转换结果),当然过程没有那么简单,JSF处理器有自己的一套解码过程。

3.3 执行验证
在处理验证阶段,JSF遍历组件树并检查每个组件,看是否每个组件的被提交值都可以接受。

验证发生前,被提交值将首先由注册到该组件的转换器或者默认转换器进行转换。

然后验证直接由组件进行或者委托给一个或者多个其他验证器来进行。

如果用户的输入无效就会想FacesContext中增加一个错误消息,并且该组件会被表示为无效,然后转到响应阶段,显示当前视图,表示错误信息。

3.4 更新模型值
如果所有的组件本地值转换验证等均成功,此时JSF就会根据EL处理关联的bean,并更新bean绑定值.在此处JSF会根据EL绑定加载配置的后台bean。

3.5 调用应用
调用注册的侦听器,然后执行事件驱动,获取下一个视图。

侦听器此时可以有效的侦听到UI组件的各项数据,事件驱动部分即action可以有效的获取被更新的后台bean数据。

执行自己的业务逻辑。

3.6 渲染响应(Render Response)
到此请求处理结束,根据导航规则,渲染响应的页面.依次执行…。

相关文档
最新文档