JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Web Framework » JSF  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 [文件]用JavaServer Faces开发Web应用
browser

戀香

版主

發文: 3570
積分: 1
於 2003-06-03 13:02 user profilesend a private message to usersend email to browserreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
用JavaServer Faces开发Web应用 liuflei3139(翻译)

http://developer.java.sun.com/developer/technicalArticles/GUI/JavaServerFaces/

by Qusay H. Mahmoud
May 2003

当你为服务器端应用开发用户界面时,你可以有很多选择,使用Jsp和Servlet的Java开发者一般使用HTML的用户界面组件来构建用户界面。这个主要是因为HTML的用户界面组件是所有的Web浏览器都支持的最小子集。当然,这样的Web应用与传统的独立胖客户端相比缺乏富有表现力的用户界面,因而功能更少,可用性也没有那么好。虽然applet可以用来设计出富有表现力的用户界面,不过Web页面的开发者可能并不精通Java程序设计。

另外,如果你参与一个大型Web系统开发的话,你可能会遇到一些技术上的难题,比如说如何实现一个查询构件或一个表浏览构件等数据库应用的组件等等等等。开发这些定制的组件需要专门的技术,而且要花一些时间来编译和测试新的库。在一个理想的情况下,开发者可以使用已经预先编译并且测试通过的,同时具有高度可配置性的组件来集成到自己的开发环境中。

JavaServer Faces 是一种可以开发富有表现力的用户界面的Web应用的服务器端技术,在它的帮助下,你可以解决像创建定制的用户界面组件这样的技术问题。这是因为,JavaServer Faces技术是一项开发运行在服务器端的Web应用程序的一个用户界面框架,它可以反过来向客户端提供用户界面。没错,用户界面的代码运行在服务器端,然而却可以响应客户端产生的各种事件。

其实现在已经存在多种可以开发富有表现力的用户界面的技术,比如Flash、 Swinglets和 Jade等。不过,这些解决方案都是专有的,而且开发工具一般也总是局限于某一个提供商。而JavaServer Faces最重要的就是它是一个标准,这意味着开发者不会被锁定到某一个单独的开发商。制定这个规范的专家组由Java开发社区的主要工具提供商的代表组成,这样开发者就不会缺乏可以选择的工具,而且他们可以使用现在使用的工具的最新版本。不过虽然各个开发商在制定规范的事情上相互合作,他们具体的实现却又相互竞争。这个就可以让开发者受益,他们可以使用工具商实现的各种特性,或是选择各种定制组件。

JavaServer Faces技术基于模型视图控制器(MVC)的把应用逻辑和表现相分离的思想,所以如果你理解MVC模式的话,你就可以真正理解JavaServer Faces技术。

本文是一个快速入门的教程,通过本文的学习,你可以开始使用JavaServer Faces 进行开发你自己的应用程序。同时本文还提供了一些其他的内容:

JavaServer Faces 技术的简介
使用JavaServer Faces 的好处
描述了JavaServer Faces内在结构
描述了JavaServer Faces技术的构成
通过一个使用JavaServer Faces 进行开发的例子,给你最直观的感觉
提供了一个例程,你可以修改一下用到自己的开发中
不过本文并没有包含如何开发定制组建的内容。

JavaServer Faces概览

JavaServer Faces是一项由Sun公司倡导的技术(其它相关可以参考JSR 127),它的主要目的是提供开发Web应用的用户界面的一个标准框架。如前所述,JavaServer Faces可以让你开发一个运行在Java服务器上的Web应用,它可以向客户端提供用户界面。 这个技术使用Servlet作为控制器,提供了富有表现力的组件模型,实现了事件处理以及模型表现。从而提供了一个Web应用的生命周期管理。

JavaServer Faces有两个主要部分组成:

Java APIs用来提供UI组件、状态管理、事件处理和检查用户输入数据的功能。这些API同时支持国际化并且容易使用。
用来在一个JSP 页面内表现JavaServer Faces用户界面的JSP定制标记库。页面开发者可以通过这个标记库来开发丰富多彩的网页。
下图给出了客户端、服务器端和JavaServer Faces 之间的关系。


图1: UI 运行在服务器上

这里,这个JSP页面不是硬编码标记语言,而是通过使用JavaServer Faces定制标记库(tag library)来开发用户界面。应用程序的UI用来管理JSP页面所包含的组件对象。

很多人都可以享受到这项技术所带来的好处:

使用标记语言(比如HTML)的网页开发者可以使用JSP标记库开发出丰富多彩的JavaServer Faces 用户界面。
应用开发者可以专注于开发模型对象和进行事件处理。
组件开发者可以在JavaServer Faces 所提供组件的基础上开发新的定制组件。
工具提供商可以把JavaServer Faces 技术集成到新版本的开发工具中用来简化基于Web的多层应用的开发。
这项技术同时也打开了Web用户界面组件复用的市场。开发者和工具提供商可以像搭积木一样使用JavaServer Faces定制组件来构建用户界面。

JavaServer Faces 的一个优势就是使用模型、视图、控制器架构(MVC)来清晰地分离应用逻辑和表现。您可能会觉得这个可能会影响到那些使用现存Web框架技术比如Struts的那些人。不过请注意,JavaServer Faces 和Struts并不是相互竞争的产品,事实上它们可以协作得很好。不过,JavaServer Faces确实比Struts有一些优势。举例来说,在Struts中,只有一种方式来表现一个元素,而JavaServer Faces却提供了多种方式来表现一个元素。选择适当的表现方式设计符合要求的表现是网页设计师的事情,应用开发人员并不需要知道使用哪一种机制来表示组件。(关于如何把JavaServer Faces 和Struts集成在一起,请参考integration of JavaServer Faces and Struts)事实上,读者可能已经注意到,Sun公司的Craig McClanahan就是Struts的作者,但他同时也是JavaServer Faces规范制定的头面人物。

JavaServer Faces应用程序的构成

一个JavaServer Faces 应用程序跟其它基于Web的Java应用程序一样,运行在Java Servlet容器内,包含以下部分:

JavaBeans 组件(或模型对象)包含应用特有的功能和数据
事件监听器(Event listeners )
JSP 页面
服务器端辅助类
用来表现UI组件的定制标记库(tag library)
用来表示事件处理(event handler)和数据校验(validator)的定制标记库(tag library)
UI 组件用来表示服务器上有状态的对象(stateful objects)
数据校验器(Validators)、 事件处理器(event handlers)和导航处理器(navigation handlers)。 (Validators用来在服务器端更新之前提供组件数据的校验。)
JavaServer Faces提供了一个基于HTML的组件标记库作为参考实现,高级开发者可以开发自己的组件标记库来表示定制组件。

JavaServer Faces参考实现提供了一个定制标记库,用HTML的方式展现组件。下面是使用这个标记库的一个简单例子。如果读者想知道它所支持的所有的组件标记的清单,请参考JavaServer Faces的规范和教程。

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<body bgcolor="white">
<h2>What is your name?</h2>
<f:use_faces>
<h:form id="helloForm" formName="helloForm" >
<h:input_text id="username" />
<h:command_button id="submit" label="Submit" commandName="submit" />
</h:form>
</f:use_faces>

JavaServer Faces组件架构的这种实现使得组件的功能可以在组件类中定义,而组件的表示可以被另外一方来提供。一个用于表示的工具包(render kit)定义对于一个特定的客户端,组件类如何准确地映射到组件标记。JavaServer Faces参考实现提供了一个这样的工具包,不过它只能把组件表现给HTML客户端。在HTML RenderKit中,每一个JSP组件都包含两部分,在UIComponent类中定义的组件功能,在表现者(Renderer)定义组件的表现特征。例如,command_button和command_hyperlink都用来表示一个UIComponent,但它们用不同的方式来表示。Button组件作为一个按钮来表示,而hyperlink组件作为一个超级连接来表示。

开始使用JavaServer Faces

要想使用JavaServer Faces进行开发,你得安装 (Java WSDP 1.0_01) 或者Tomcat4.0+。

JavaServer Faces参考实现的预览版(EA3)可以从这里下载。 当你解压以后,你会有类似的目录结构(Windows平台下):

c:\jsf-ea3>
example
lib
其它文件

example子目录里面是示例应用程序的源文件和WAR档案文件,lib 子目录中是一些JavaServer Faces 必须依赖的Jar档案文件,我们分别予以简介:

commons-beanutils.jar:定义和访问JavaBeans 属性的一些实用工具
commons-collections.jar:J2SE 集合框架(Collections Framework)的扩充
commons-digester.jar:用来处理xml文档
commons-logging.jar:一个灵活记录日志的实用程序
jsf-api.jar:包含javax.faces.* API类
jsf-ri.jar:包含JavaServer Faces 参考实现的类
jstl.jar:包含JavaServer Pages 标准标记库(JavaServer Pages Standard Tag或 JSTL)
jstl_el.jar:包含用来处理JSTL表达式语言的类
standard.jar:使用JSTL所必需的
请注意JavaServer Faces 的参考实现是一个预览版(EA),仅仅是对规范的一个简单实现,也就是说,它还不是十分成熟。另外,现在JavaServer Faces的参考实现不能与Java WSDP 1.1一起协同工作。如果你在Java WSDP 1.1中使用JavaServer Faces ,运行时就会抛出异常,如下图:



图2: JavaServer Faces参考实现与Java WSDP 1.1不能协同工作
(点击放大)

如果你没有Java WSDP 1.0_01而且你想玩一下JavaServer Faces 的话,那么我建议你用Tomcat ,本文中所有的例子都是基于Tomcat-4.1.24的。当你完成Tomcat的安装后,在浏览器中键入http://localhost:8080进行测试,如果没有什么问题的话,那么Tomcat的默认页面就会出现。下面我们看看JavaServer Faces 所给的例子。很简单,把c:\path-to-JSF-installation 目录下的WAR文件拷贝到你Tomcat安装目录的webapps子目录下面。键入http://localhost:8080/demo-name就可以运行例子程序。比如,我把cardemo.war拷贝到webapps目录中,然后在浏览器中输入http://localhost:8080/cardemo,下图就是我的结果:



其它部分,自行至:
(三)
(四)
(五)


browser edited on 2003-06-03 13:14
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
7457 [文件]用JavaServer Faces开发Web应用 browser 11248 2003-06-03 13:02
» JWorld@TW »  Web Framework » JSF

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8