随笔 - 170  文章 - 536  trackbacks - 0
<2006年2月>
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011

常用链接

我参与的团队

随笔分类(103)

搜索

  •  

积分与排名

  • 积分 - 412372
  • 排名 - 135

最新评论

阅读排行榜

    在后面的时间里,我会陆续的把我在 JSF 学习过程中的一些心得体会以及一些值得参考的代码拿出来,整理成 JSF Cookbook 系列,并逐步发布出来。当然在整理的过程中因为个人能力有限,难免会出现错误和遗漏,请高手多多指点,谢谢。只希望这些资料对大家学习JSF带来一些便利。因为个人时间有限,速度可能会有些慢,请大家原谅,也希望有兴趣的朋友也能投入到资料的编写过程中来。
    该资料编写工作在我的论坛 http://www.js66.com/java 中进行,通常情况下我会在论坛中编写一定的数量的资料后,集中在这里发布,可能会有些延期,所以如果大家希望看最新版的资料,请到我的论坛来,如果你有这方面的疑问也可以到这里来寻求解答。

1.什么是 JavaServer Faces

问题:
你对JSF不了解,希望了解更多关于JSF的资料。

解决:
    JavaServer Faces(JSF) 是一种标准的 J2EE 表示层的技术,其主旨是为了使 Java 开发人员能够快速的开发基于 Java 的 Web 应用程序。它不同于其它 Java 表示层技术的最大优势是其采用的组件模型,事件驱动,并且和其它的 MVC 框架相比,它是一种 Java 标准,在Java EE 5 中,JavaServer Faces 1.2 正式作为一个标准,加入 Java Enterprise 的世界。

    作为一种高度组件化的技术,开发人员可以在一些开发工具的支持下,实现拖拉式编辑操作,用户只需要简单的将 JSF 组件拖到页面上,就可以很容易的进行 Web 开发了。这是其作为一种组件化的技术所具有的最大好处,我们能用的组件不光是一些比较简单的输入框之类,还有更多复杂的组件可以使用的,比如 DataTable 这样的表格组件, Tree 这样的树形组件等等。在 Ajax 盛行的今天,我们也可以通过 JSF 组件来简化开发人员的开发难度,使得 Ajax 能通过拖拖拉拉的操作方便的进入到我们的应用中去。作为一种标准的技术,JavaServer Faces 得到了相当多工具提供商的支持。同时我们也会有很多很好的免费开发工具可以使用,前不久 Sun Java Studio Creator 2 和 Oracle JDeveloper 10g 作为免费的支持 JSF 的开发工具发布,给 JSF 带来了不小的生气。另外我们也有一些很优秀的商业开发工具可共选择,BEA Workshop (原 M7 NitroX),Exadel,MyEclipse 这样的基于 Eclipse 的插件开发工具,为现在广大的 Eclipse 用户带来了不小的便利,IBM 的 Rational Application Developer 和 Borland 的 JBuilder 也是很不错的支持 JSF 可视化开发的商业开发工具,在后面我会用一节的篇幅简单的介绍一下这些工具。

    传统的 Web 应用程序与桌面应用程序存在着许多本质上的差别,使得用户要手工的去捕获各种浏览器请求,保存客户端状态,并且手工控制着页面的转向,等等。JSF 的出现,无疑给我们带来了巨大的便利,JSF 提供了事件驱动的页面导航模型,该模型使应用程序开发人员能够设计应用程序的页面流。与 Struts 的方式向类似的是,所有的页面流信息都定义在 JSF 配置 XML 文件 (faces-config.xml) 中,而非硬编码在应用程序中。这很大程度简化了开发人员开发难度,简化了应用程序的开发。

    同时JavaServer Faces 也是一种遵循遵循模型-视图-控制器 (MVC) 模式的框架。实现了视图代码(View)与应用逻辑(Model)的完全分离,使得使用 JSF 技术的应用程序能够很好的实现页面与代码的分离。所有对 JSF 页面的请求都会通过一个前端控制器 (FacesServlet) 处理,系统自动处理用户的请求,并将结果返回给用户。这和传统的 MVC 框架并没有太大的区别。

    JavaServer Faces 是一种使用了 POJO 的技术同时在使用了类似 Spring 的控制反转(IoC) (或称为依赖注入-DI) 技术,在 JSF 的 Backing Bean 中,我们可以把视图所需要的数据和操作放进一个 Backing Bean 中。同时得益于 JSF 使用的 DI 技术,我们可以在配置文件中初始化 Managed Bean,同时我们也可以通过这样的技术很方便的和使用类似技术的 Spring 进行整合。


2.下载 JSF 的实现版本

问题:
你需要使用 JSF 来开发应用程序。

解决:
    因为 JSF 1.1 是一个标准(JSR-127),所以会有一些不同的厂商和组织提供了自己的实现,目前比较流行的实现包括 Sun 的 Reference Implementation (参考实现,简称为 RI) ,Apache 软件基金会的 Myfaces, Oracle 的 ADF Faces (目前 Oracle 已经将其捐赠给 Apache 软件基金会下的 Myfaces 项目,成为它的一个子项目)。
    分别提供了以上这些实现的下载地址,大家可以去下载 JSF 的实现版本,我们会在后面的介绍中用到这些包。

    Sun RI : http://java.sun.com/j2ee/javaserverfaces/
    Myfaces : http://myfaces.apache.org/
    ADF Faces : http://www.oracle.com/technology/products/jdev/htdocs/partners/addins/exchange/jsf/index.html

讨论:
    因为 JSF 有了这么多种类的实现版本,大家或许会觉得有些疑惑,我该到底用哪个版本去开发呢?在我现在和以后的文章系列里面,我将会以 Apache Myfaces 1.1.1 的实现版本为例,来介绍 JSF 技术。

    Struts 社区为了扩展 JSF,推出了 Shale 子项目,目的是为 JSF 提供大量的应用支持,它以 JSF 的实现为基础,提供了一系列方便易用的特性,包括有:Web Flow,Ajax,Tiles 的集成,客户端验证,并且提供了类似于 Tapestry 的视图和参数化的 SubTree 模型。虽然 Shale 到目前为之还没有一个正式发布的版本,但它在 2005 年 JavaOne 的 Web 框架评比中,在技术特性的评比中获得了 4.95 的高分,超越 JSF, Tapestry, Webwork, Struts 而独占鳌头。但是相信我们除了 JSF 标准外,很快会有这样一个更好的选择了。

    记住,Shale 不是 JSF,而是对 JSF 的扩展,也正如 Struts 的创始人 Craig McClanahan 所说的“Shale 与 JSF 的关系,就像 Struts 与 JSP 的关系一样”。

[Last Update 2006-01-17]

posted on 2006-02-17 15:41 steady 阅读(2929) 评论(8)  编辑  收藏

FeedBack:
# re: JSF Cookbook (1) 2006-02-17 19:12 一天一点爱恋
谢谢,辛苦了!  回复  更多评论
  
# re: JSF Cookbook (1) 2006-02-24 17:34 revever
期待下一片文章  回复  更多评论
  
# re: JSF Cookbook (1) 2006-03-06 10:45 JSF fans
关注中!记得要坚持更新哦,楼主!!  回复  更多评论
  
# re: JSF Cookbook (1) 2006-03-09 16:39 闷炮
楼主辛苦了!!!  回复  更多评论
  
# re: JSF Cookbook (1) 2006-04-12 10:08 郭文涛
厉害 期待中 学习中  回复  更多评论
  
# re: JSF Cookbook (1) 2006-09-16 09:54 lantian
JSF开发中控件是一方面,更主要的请求处理过程生命周期的各个阶段作了哪些事情,建议大家熟读规范以深刻理解JSF。  回复  更多评论
  
# re: JSF Cookbook (1) 2006-09-16 14:05 坏男孩
jsf是web程序发展的一大趋势!关注  回复  更多评论
  
# re: JSF Cookbook (1) 2006-10-20 13:52 zzz
好的很好,我也是SUN公司的FANS.以后多发点这样的文章
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: