JSF与WEB的完美组合 高度提升开发效率

js|web

与微软Visual Studio.NET程序开发有可视化工具的支持相比,人们在开发基于Java的Web用户界面时仍然需要手工书写大量的标签,同时还要考虑页面状态信息的保存、客户端事件处理等问题,开发难度比较大,效率较低,重用性差。Java Server Faces(JSF)技术正是为了解决这一问题应运而生的,其最引人注目的特性之一是它与标记语言、协议、客户端设备无关。利用JSF提供的可重用、可扩展、基于组件的用户界面框架,在快速开发工具RAD的支持下实现可视化开发。现在JSF技术已经得到了许多大厂商的支持,如Sun公司的JSF Web UI、IBM公司的JSF extension以及Oracle的ADF Faces等,许多开源项目也提供对JSF技术的支持。同时Oracle、Sun、Borland和IBM等公司都为JSF提供了开发环境。

传统JSP开发存在的问题

实现表示层和业务层的分离,这是J2EE Web应用一直以来的理想,可惜JSP并没有真正实现这个目标。JSP是一个基于Java的Web用户界面开发标准技术,是一种“脚本式”开发的Web技术,在JSP页面中混淆了大量用于显示逻辑的HTML和用于业务逻辑的Java代码,使得页面设计与程序开发无法分离;JSP另一个更大的缺陷是脚本不能重用,这常常导致开发者不得不在JSP页面之间进行复制-粘贴操作,进而导致同一段代码出现多个版本,从而使得程序的调试和设计极其错综复杂。而标签库TagLib作为JSP的补充,将Java代码从JSP中剥离,也只是有限地实现了表现与逻辑的分离,始终没有摆脱代码和HTML页面揉和的问题。此外,JSP还存在着其他固有的缺陷,例如对应Servlet编译的出错信息很难在JSP中找到准确的出错位置,由此给调试带来很大困难。

JSF技术介绍

在Sun公司提出的J2EE平台上,Java Server Faces(JSF)是一种用于构建Web应用程序的新标准Java框架。它提供了一种以组件为中心来开发JavaWeb用户界面的方法,从而简化了开发。“企业开发人员”和Web设计人员将发现JSF开发可以简单到只需将用户界面(UI)组件拖放到页面上,而“系统开发人员”将发现丰富而强健的JSF API为他们提供了无与伦比的功能和编程灵活性。

JSF还通过将良好构建的模型—视图—控制器(MVC)设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。

JSF是由Java Community Process(JCP)制定的一个Web应用框架标准。JSF具有良好定义的请求处理生命周期和丰富的组件层次结构,旨在推动基于Java的Web用户界面开发的简易性。利用JSF提供的可重用、可扩展、基于组件的用户界面框架,在快速开发工具RAD的支持下,可以通过拖放组件的方式对Web用户界面进行可视化编辑,将用户界面上的组件与一个数据源绑定,并将客户端用户界面产生的事件交给服务器端处理,从而大大降低基于Java的Web用户界面的开发难度,提高开发效率。

简而言之,JSF的主要部分是一个GUI组件框架和一个用于跨不同标记语言或客户端设备描述组件的灵活模型。JSF GUI组件框架使开发人员能够创建JSF应用程序的用户界面。

JSF GUI组件包括标准的HTML表单控件(如按钮)、布局组件,以及更复杂的组件,如数据表。此外,第三方还可以扩展规范中定义的基本类,来开发额外的GUI组件。

JSF组件的体系结构是这样设计的:组件的功能由组件类定义,组件的呈现由一个单独的呈现器定义。呈现器定义了组件类如何映射为适合特定客户的组件标签。

JSF的主要优势之一就是它既是Java Web用户界面标准又是严格遵循模型-视图-控制器(MVC)设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使JSF应用程序更易于管理。为了准备提供页面对应用程序数据访问的JSF上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端控制器来处理。JSF技术做到了应用程序逻辑和表示的完全分离,是真正彻底的MVC模式。

JSF技术现在的版本是1.1,下一个版本将是1.2,它将和J2EE 5.0一起发布。

开发基于JSF的Web应用程序步骤

JSF是构建Web应用程序的新标准Java框架,可以依据JSF的框架标准手工书写Web应用程序,以文本方式像写HTML或JSP程序一样实现Web用户界面的设计;同时在开发、运行以及调试前还需要搭建系统运行平台。这样做的缺点是不能充分体现可视化开发的便捷和高效,一般是在分析Web应用程序的结构时使用。

使用快速开发工具RAD,是实现JSF可视化开发的先决条件。在快速开发工具的支持下,符合JSF标准的Web应用程序开发、运行以及调试均在IDE环境中实现,大大提高了开发的效率,整个程序开发过程快捷高效。现在获得大厂支持的RAD工具很多,比如IBM公司的WebSphere Studio,Oracle公司的JDeveloper,和Sun公司的Java Studio Creator等都提供对JSF开发的支持。

如果不使用IDE开发环境,那么在开发应用程序前,必须先搭建系统运行平台。比如安装TOMCAT和Sun的JavaWeb Services Developer Pack (JWSDP) 1.2。使用JSF时需要JSTL与JSF的标签函数库,在Web应用程序的WEB-INF\lib目录下放入所需的JAR文件。如果使用IDE开发环境,开发前期的准备工作比较简单,只需安装好IDE环境即可,不需要其他的配置,一般IDE中都有内嵌的应用服务器,足以支持程序的开发、运行和调试。不管是否使用IDE开发环境,JSF开发Web应用程序通常分为以下三个步骤:

视图设计

方便、快捷地开发基于JSF的Web应用程序,是在JSF提供了一组丰富的、可重用的服务器端用户界面组件的条件下实现的。在开发工具的支持下,用户可以很容易地在可视化环境中利用这些组件构建Web用户界面,处理组件的数据校验、事件处理等用户界面管理问题。

设计每个需要的JSP页面,在页面中放置JSF的内置组件,并将组件与应用层的JavaBean绑定。利用RAD工具能通过拖放组件的方式轻松实现页面文件,不需要手写大量代码。开发工具自动生成页面对应的Java文件,在文件中定义好了页面的JSF组件及其getter、setter方法以及JSF组件的“action”属性对应的方法等。程序员可以方便地在已有程序的基础上修改、调试。

模型设计

JSF技术做到了应用程序逻辑和表示的完全分离。在模型设计部分,程序员只需要考虑程序的逻辑功能,不需要考虑数据的表现形式。JSF的模型是通过JavaBean程序来实现的。

控制器设计

JSF的控制器设计是在配置文件中完成的,相关的主要有两个文件:web.xml文件和faces-config.xml文件(均在WEB-INF目录下)。web.xml文件主要用于控制JSF的生命周期,实现部署描述符。faces-config.xml文件实现导航,在文件中控制页面之间的跳转流程。

配置步骤是首先配置Web应用程序的web.xml文件,然后是配置JSF的控制文件faces-config.xml文件。这两个文件格式固定,在IDE环境中这个过程由工具自动完成,不需要设计人员的干预,即使手工配置也比较简单。

JSF的技术重点在View部分,它实现了Web应用程序设计角色的完全分离。JSF网页设计者只需要专注于页面的设计;应用程序开发者主要关心Model部分的JavaBean的开发;程序的流程控制则由faces-config.xml专门配置。

JSF是基于Java的Web应用开发领域里提供了一个可重用、可扩展、基于组件、工具友好的服务器端UI框架。在支持JSF的RAD开发工具中,人们可以像使用VisualStudio.NET一样方便快捷地构建Web用户界面,大大降低了利用Java技术实现Web用户界面的难度,提高了开发效率。

JSF具有强大的组件体系和事件处理系统,完全实现了MVC模式的应用架构,使得基于Java的Web用户界面程序开发难度大大降低,提高了开发效率,非常适用于Web页面的开发。

JSF是一个开放的标准,具有很好的可扩展性。依照JSF的规范,用户完全可以根据需求定制自己的用户界面组件、事件处理器、数据校验和转换组件等,这些组件和标准的JSF组件一样是可重用的。JSF API是直接架构在Servlet API之上的,因此JSF用户界面组件的呈现并不局限于特定的脚本技术或标记语言。表示层完全可以采用JSP之外的技术。在众多的J2EE表现层框架技术中,JSF表现出其旺盛的生命力。尽管JSF技术还有不少问题,但随着JSF技术的不断成熟和版本更新,其必将获得越来越多的应用。

时间: 2024-09-17 03:41:50

JSF与WEB的完美组合 高度提升开发效率的相关文章

使用WEB工具快速提高Android开发效率_Android

正所谓工欲善其事,必先利其器.学习并应用优秀的轮子,可以让我们跑的更快,走的更远.这里所指的工具是广义的,泛指能帮助我们开发的东西,或者能提高我们效率的东西,包括:开发工具,监测工具,第三方代码库等. 在Google的广大支持下,便捷开发Android程序的Native工具层出不穷.其实Android开发涉及到的范围也不小,一些Web工具有时候也会带来事半功倍的效果.有些甚至是一些native应用无法做到的.本文,将简单列举一下本人正在使用的一些工具,当然也会持续更新. 查找优秀的参考工程 co

使用WEB工具快速提高Android开发效率

正所谓工欲善其事,必先利其器.学习并应用优秀的轮子,可以让我们跑的更快,走的更远.这里所指的工具是广义的,泛指能帮助我们开发的东西,或者能提高我们效率的东西,包括:开发工具,监测工具,第三方代码库等. 在Google的广大支持下,便捷开发Android程序的Native工具层出不穷.其实Android开发涉及到的范围也不小,一些Web工具有时候也会带来事半功倍的效果.有些甚至是一些native应用无法做到的.本文,将简单列举一下本人正在使用的一些工具,当然也会持续更新. 查找优秀的参考工程 co

十大 Node.js 的 Web 框架,快速提升工作效率

Node.js 系统含有多种不同的结构,如 MVC.全栈.REST API 和生成器等.这些结构不仅提升了 Web 应用的开发效率,也优化了开发过程.在这里,我们收集整理了十个高效的 Node.js 框架,希望对你有帮助. 1.Node.js 开发框架 Sail.js Sails.js 就像是 Node.js 平台上的 Rails 框架.这是一个可靠可伸缩的开发框架,面向服务的架构,提供数据驱动的 API 集合.用来开发多玩家游戏.聊天应用和实时面板引用非常方便,也可用于开发企业级 Node.j

十大Node.js 的Web框架,快速提升工作效率

Node.js 系统含有多种不同的结构,如 MVC.全栈.REST API 和生成器等.这些结构不仅提升了 Web 应用的开发效率,也优化了开发过程.在这里,我们收集整理了十个高效的 Node.js 框架,希望对你有帮助. 1.Node.js 开发框架 Sail.js Sails.js 就像是 Node.js 平台上的 Rails 框架.这是一个可靠可伸缩的开发框架,面向服务的架构,提供数据驱动的 API 集合.用来开发多玩家游戏.聊天应用和实时面板引用非常方便,也可用于开发企业级 Node.j

提升开发效率-.NET应用程序开发标准化

标准|程序 通过为你的企业建立一个公共的应用程序结构框架来提高.NET应用程序的开发效率. 作者:Rao Chejarla (印度) 涉及技术:ADO.NET.ASP.NET 开发企业应用程序是个复杂的过程.你可以运用Microsoft .NET技术的许多工具来使这个过程变得更快更容易,但由于.NET的复杂性,选择最直接的方法是很难的.如果没有明确的标准和方针用来开发应用程序,企业中的每个开发小组就可能在安全.数据库访问策略和测试过程上进行重复开发.虽然每个小组都可能在这些领域中开发出有效的方法

AJAX 图片展示框架56个 提升开发效率第1/2页_AJAX相关

动态图片展示一方面能使用AJAX或Flash实现图片数据的异步获取,减少浏览的等待时间:一方面使用JavaScript+CSS定制友好的用户体验模式,是图片展览web应用程序开发的一大利器.这里收集的框架都是经过测试可用的,描述大多是各框架主页上的介绍,来不及翻译(有些是西班牙语的 @_@),主要收集来源为欧美和台湾的一些社区和博客,希望大家也能将自己收集的好框架拿出来一起分享! Ajax Image Galleries & Lightboxes MinishowcaseMinishowcase

KDE社区推ALERT开源工具集提升开发效率

ALERT是一个开源项目,旨在提高开源开发者在协作环境下的bug整体解决效率.ALERT系统提供了一些方法和工具,来帮助改善项目开发者之间的协作,无论是企业内部的团队,还是成员遍布世界各地的虚拟团队. ALERT项目开始于2010年底,由欧盟第七研发框架计划(European Union's 7th Framework Programme)提供部分资助.目标是通过改进bug跟踪.软件质量工具来帮助开源开发者更有效地工作,以便生产出更好的软件. ALERT项目包括如下工具: KESI:用于从结构化

提高iOS开发效率的方法和工具(转)

转载作者@__weak_Point部分内容并作出自己认为更加高效率的方式 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时在使用AppCode等其他的IDE,在这里我主要介绍Xcode中提升开发效率的方法. 1.善用快捷键 快捷键是开发中必不可少的,当你善于使用快捷键的时候,十指在键盘上飞舞,那画面太美,我不敢想象. 常用快捷键操作 2.常用代码片段 开发中有一些常用的代码,可

优秀Web开发者提升开发能力必知的10件事

"开发工作不仅仅只是写代码"这句话来自3EV网站的Dan Frost,他在一篇文章中阐述了开发过程中应该注意的一些事项.原文内容如下: 开发者是创造数字世界的主力军,他们不应该只扮演编程工具的角色,而应该对开发工作有更高的要求.那么,开发者可以从哪些方面提高开发能力呢?下面我就谈一下我的想法.我的建议可能不全面,但希望能够给你带来一些帮助. 1. 不要只盯着代码 如今人人都会写代码.很多业余爱好者也可以搭建网站.编写应用程序,编程已经不再稀奇. 随着网络的普及,许多人只需通过自学就会编