J2EE开发框架JavaServer Faces(JSF)个人经验

来源 :硅谷 | 被引量 : 0次 | 上传用户:simetl21
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]JSF这项技术是由Craig McClanahan为主设计的,而Craig McClanahan正是如日中天的Struts的主设计师(Java人都知道),故JSF大体上与Struts一脉相承。Struts是典型的framework,侧重架构设计,而JSF则侧重于JSP的快速开发功能。
  [关键词]JavaServer Faces(JSF)MVC Managed Beans
  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1110044-01
  
  参加J2EE的项目开发也有3年了,其表现层的框架使用过Struts和JSF,目前主要还是使用JSF 为主,因为JSF在许多方面相对于Struts还是有很多的优势的。总结这几年的开发经验再结合网上一些朋友对JSF一些评价,我对JSF这项技术进行一些分析和点评。
  JSF这项技术是由Craig McClanahan为主设计的,而Craig McClanahan正是如日中天的Struts的主设计师(Java人都知道),故JSF大体上与Struts一脉相承。以笔者初试的体验,Struts是典型的framework,侧重架构设计,而JSF则侧重于JSP的快速开发功能。
  
  一、什么是MVC
  
  Model-View-Controller (MVC) 模式的目的是从数据表示(View)中将数据(即 Model)分离出来。如果应用程序有多种表示,可以仅替换视图层而重用控制器和模型代码。类似的,如果需要改变模型,可以在很大程度上不改变视图层。控 制器处理用户动作,用户动作可能造成模型改变和视图更新。当用户请求一个JSF页面时,请求发送到 FacesServlet。FacesServlet 是 JSF 使用的前端控制器 servlet。和其他很多 Web 应用程序框架一样,JSF 使用 MVS模式消除视图和模型之间的耦合。为了集中处理用户请求,控制器 servlet 改变模型并将用户导航到视图。
  FacesServlet 是 JSF 框架中所有用户请求都要经过的控制器元素。FacesServlet 分析用户请求,使用托管 bean 对模型调用各种动作。后台(backing)或托管(managed)bean 就是该模型的例子。JSF 用户界面(UI)组件是视图层的例子。MVC 模式把任务分解给具有不同技能的开发人员,使这些任务能够同时进行,这样 GUI 设计人员就可以使用丰富的 UI 组件创建 JSF 页面,同时后端开发人员可以创建托管 bean 来编写专门的业务逻辑代码。
  
  二、JSF is the standard(JSF是标准)
  
  J2EE5.0要提供一个JSF的实现,这表明JSF不久将会无处不在。这可能与你无关,但是和工具供应商密切相关。现在大概有50个Java web应用程序框架,工具供应商不会情愿去支持一个特别的框架,但是他们会毫不犹豫地去支持一个标准。而且不止供应商,开源项目也会迅速的聚集在JSF的四周,争先恐后的去实现相同的功能。
  
  三、POJO Action Methods
  
  JSF的行为方法可以在POJPO中实现。这意味着你不用在表单和模型对象之间实现一个多余的行为层。顺便说一下,在JSF里面没有行为对象,行为在模型对象中实现。
  
  四、Managed Beans(Dependency Injection 依赖注入)
  
  在JSF中不仅使用了 POJO 技术,而且还使用了类似 Spring 的控制反转(IoC) (或称为依赖注入-DI) 技术,在 JSF 的 Backing Bean 中,我们可以把视图所需要的数据和操作放进一个 Backing Bean 中。同时得益于 JSF 使用的 DI 技术,我们可以在配置文件中初始化 Managed Bean,同时我们也可以通过这样的技术很方便的和使用类似技术的 Spring 进行整合。
  
  五、Extensibility(可扩展性)
  
  JSF有6个对象实现了这个框架的大部分功能,而且你可以很容易的用你自己的实现代替原有实现。比如你想加一个自定义参数在JSF表达式语言里面,或是添加一个自己的视图控制器以便于区分组件和HTML.事实上Shale实现了上面的功能。如果你还没有满足,JSF提供了几个地方你可以轻松的控制JSF的生命周期。Shale给你的会更多。
  
  六、Value Binding Expressions(值绑定表达式)
  
  在Struts中,你负责把数据从Form传递到模型对象。你实现的Action的execute方法是把Form作为一个参数。然后你再手动的把数据从Form Bean里面取出放到模型对象里面。你要为应用里面的每个Form做这些事情,然而在JSF里面,你只需像这样:#{model.property}就够了,其他的交给JSF来处理。
  
  七、Components(组件)
  
  就像Swing一样,JSF提供丰富的底层构件去开发组件然后添加到标准的组件集。那些底层构件让你很容易的生成自己的组件并且和别人共享。现在我们到处都能看到自定义组件跳出来,比如说Oracle的ADF和MyFaces,两者都提供了丰富的组件集,就像javascript日历,tree等等。
  当然,组件只是一部分。典型的是,组件都和一个独立的renderer对应,这给我们带来了真正的好处。但是和JSF中的很多东西一样,你不一定要墨守成规。只要你愿意,你可以实现render自己的组件,虽然这样你会失去给组件加入别的renderer的能力。
  
  八、程序员和网页设计人员的分工
  
  在JSP中,程序员和网页设计人员的工作有时候是互相交织、无法区分的。这是因为JSP页面中掺入了网页设计人员所不熟悉的一些JSP标签,甚至是晦涩的Java代码。要求网页设计人员理解这些标签和代码是不现实的,不符合分工合作的原则。在JSF中,框架为网页设计人员提供了一套标准的UI组件,在工具的支持下,可以通过拖放简单地添加到网页上,然后设置某些显示属性来满足视觉要求。
  网页设计人员不需要知道UI组件背后的复杂代码,那是程序员的事,而程序员也不需要再处理任何与视觉相关的细节,程序员所做的只是给UI组件绑定类的属性或方法。虽然程序员和网页设计人员需要修改同一份文件,但他们各司其职,各得其所,互不干扰。程序员和网页设计人员工作的明确划分,是JSF在易用性方面迈出的一大步。
  
  参考文献:
  [1][美]曼,JSF实战.北京:人民邮电出版社.
  [2][美]Chris Schalk. JavaServer. Faces完全参考手册. 北京:人民邮电出版社.
其他文献
[摘要]就802.20协议物理层目前采用的OFDM/OFDMA技术和Flash-OFDM技术进行比较。OFDMA是一种多载波调制技术,它的原理是无线通信信道划分为多个窄带子信道同时传送,在每个子信道上使用一个子载波进行调制。Flash-OFDM技术采用FDD双工方式,上下行链路是数百个子信道组成的宽带载波,传输数据时给每个用户分配子信道。每个子信道采用了自适应调制和先进的编码技术,其频谱利用率比C
期刊
[摘要]介绍一种以单片机AT89C51为核心的报警器,利用电话网络传输报警信息,并根据探头的类型向用户播放不同的警情信息。跟现有家庭报警器相比,本装置将无线通信模块ZXGM18引入报警系统,使系统可通过固定电话线和无线通信模块向外界报警,从而克服报警器因电话线被恶意剪断而失去报警功能的问题。  [关键词]报警器 双频多音 遥控 无线通信   中图分类号:X9 文献标识码:A 文章编号:1671-7
期刊
[摘要]采用信息纽扣iButton设计智能电子锁,并采用电源外置的方法,设计电子锁钥匙结构。这种新型电子锁不仅具有良好的防盗作用,而且解决了电源供给问题。  [关键词]iButton芯片 电子技术 单片机  中图分类号:TN7 文献标识码:A 文章编号:1671-7597(2008)1110015-01    随着社会经济的发展,电子设备和保密机构对更安全、更方便的身份认证和访问控制的需求越来越高
期刊
[摘要]中央空调系统是大型建筑物不可缺少的配套设施之一,但很多大型建筑由于当初的设计存在缺陷,造成燃料、电能等的消耗非常大,随着人们节能环保意识的增强,节能改造势在必行,通过利用变频器、PLC技术阐述在空调系统中怎样达到节能作用。  [关键词]变频器 PLC 节能 中央空调  中图分类号:TM5 文献标识码:A 文章编号:1671-7597(2008)1110024-01     一、前言    
期刊
[摘要]选择HfO2高K姗介质作为研究对象,利用反应溅射方法制备了HfO2栅介质薄膜,分析不同的工艺制备条件对其HfO2栅介质电学性质和可靠性的影响。  [关键词]高K栅介质 HfO2 泄漏电流输运机制 SILC效应  中图分类号:TM2 文献标识码:A 文章编号:1671-7597(2008)1110014-01    MIS(金属一绝缘体一半导体)结构是MOSFET的重要组成部分,也是理解MO
期刊
[摘要]随着全国联网战略的实施,远距离大功率互联的工程实例越来越多。低频振荡已成为限制区域联络线输送功率大小,甚至影响互联电网安全稳定运行的主要因素之一。SVC 作为一种应用较广的FACTS 装置,其主要功能是通过可控的并联补偿维持系统的电压水平,且随着同步相量测量单元(PMU)在电力系统中的广泛应用,广域测量系统在国内外工程应用也更加突出。本文针对现有利用广域测量信号为输入设计SVC 的附加阻尼
期刊
[摘要]基于java 2 Microedition 的开发环境对手机中的2D游戏架构进行分析与设计,利用Eclipse和WTK等IDE进行编程实现,经过实验证明该架构在手机2D游戏中具有较好的通用性和可移植性。  [关键词]j2me MIDlet 手机2D游戏 地图读取 碰撞检测  中图分类号:TP3文献标识码:A 文章编号:1671-7597(2008)1110028-01    一、引言   
期刊
[摘要]对于在智能小区系统中应用广泛的RS485总线,介绍其对等式多机通信原理,同时分析了长信号线振铃效应产生的原因,并针对这种情况引入RS485总线隔离器,经过实际布线表明,采用这种隔离器后信号质量得到了明显的改善。  [关键词]智能小区 RS485总线 振铃效应 AVR单片机  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1110040-01    一、引言  
期刊
[摘要]当今社会数据库几乎触及人类社会生活的所有方而,数据库是计算机编程中应用最广泛的领域。而数据库应用的一个最基本、最重要的方面就是对数据库的访问。介绍ADO 等这种数据库访问技术,叙述这些技术的典型特征和结构体系。并从其对数据源的操作方式、面向对象特性等几个方面进行深入分析,最后给出使用ADO编程模型的一般步骤与实例。  [关键词]数据库访问 ADO 数据库 技术  中图分类号:TP3 文献标
期刊
[摘要]将控制技术,智能技术,系统辨识,自适应,仿真技术与嵌入式技术融合在一起,构建出基于ARM的通用型嵌入式智能控制器。该控制器可以针对不同的被控对象,自动采取最优控制策略,通过大量的仿真实验,对一定的被控对象具有良好的控制效果,因此该控制器的设计具有良好的应用与发展前景。  [关键词]通用型 嵌入式 智能控制 模式识别  中图分类号:TP2 文献标识码:A 文章编号:1671-7597(200
期刊