摘抄于:http://gceclub.sun.com.cn/staticcontent/html/2004-06-10/studio.html
几个月前 Sun Microsystems 宣布了 Sun Java System,它是一个对软件进行打包、发布和定价的新方法。Sun 初步指定了组成 Sun Java System 的一组软件。Sun Java Enterprise System 就是其中的一个,它将一组综合的基于标准的企业服务集成到一个单一的包中。这些服务包括 Web 和应用程序服务、目录和身份认证服务、门户服务和可用性服务。
作为 Sun Java System 宣言的一部分,Sun 也宣布了 Sun Java Studio Enterprise,它是 Java Enterprise System 的开发人员解决方案。Java Studio Enterprise 包括了创建和测试部署于 Java Enterprise System 上的应用程序的工具和服务。总之,Java Studio Enterprise 和 Java Enterprise System 为开发人员提供了一整套的解决方案,用于开发、测试以及部署企业应用程序和 Web 服务。
较早前的一篇文章 介绍了 Java Studio Enterprise。它强调了 Java Studio Enterprise 的一些关键的功能,以及为开发人员带来的好处。紧接着的一篇文章 阐述了 Java Studio Enterprise 如何很容易的创建和测试会话 bean,会话 bean 是一个基于 Enterprise JavaBean (EJB) 的组件,并代表 J2EE 服务器的一个客户。
在本文中,您将了解到如何利用 Sun Studio 的 Web Application Framework 来轻松的创建 Web 应用程序,Web Application Framework 已经集成到了 Java Studio Enterprise 中。(为简单起见,本文以下用“Web Application Framework”,而不用“Sun Studio 的 Web Application Framework”。) Web Application Framework 不仅可以简化 Web 应用程序的创建过程,而且可确保 Web 应用程序符合最佳的设计理念,并具有高度的可扩展性。
目录
- | Web 应用程序示例 |
- | 更多有关 Web Application Framework 的主题 |
Web 应用程序示例
在下面的示例中,您将了解到如何利用已集成到 Java Studio Enterprise 当中的 Web Application Framework 来迅速创建一个 Web 应用程序。利用创建的 Web 应用程序,用户可以直观地浏览数据库中的记录。下面的步骤将描述 Web Application Framework 的诸多功能特性如可视和不可视组件,以及允许添加用户自定义组件的定制功能。除了具有 Web Application Framework 的功能外,Java Studio Enterprise 也有许多其他的用于提高开发人员效率的功能,以及一套综合性的开发资源和支持服务,目的是解决在应用程序的开发、编译以及测试过程中所遇到的问题。
更多有关 Web Application Framework 的主题
对于 Web 应用程序而言,如果它应满足的需求简单的话,则它的创建也就相对简单。但随着需求的增长,则创建 Web 应用程序会迅速变得困难起来。最具难度的一个需求是:使 Web 应用程序具有可扩展性,以满足用户的不断增长(有时候数量会十分巨大)。要使 Web 应用程序具有可扩展性是很困难的,同时也将增加应用程序的复杂性,而且使它的维护更加困难。为了迎接这些挑战,Java Studio Enterprise 集成了一个功能强大的、灵活的以及易用的 Web Application Framework。Web Application Framework 为您提供了一个图形化的环境和一组可重用的组件,这样您就可以迅速创建 Web 应用程序了,甚至是那些具有高度复杂性和成熟性的 Web 应用程序。Web Application Framework 的基础是一组 J2EE 的被称为 设计模式 的最优方案 (best practice)。Web Application Framework 在它所生成的代码中实现了这些设计模式中的许多。为了做到这一点,Web Application Framework 确保 Web 应用程序的结构完整性,并使它们具有高度的可扩展性,同时易于维护。
启动 Java Studio Enterprise
创建一个新的 Web 应用程序
创建一个名为 PaginateDemo
的 Web 应用程序:
| |
注意在 Explorer 窗口的 Web Application Framework Web Apps 视图中现在显示出了一个 |
创建一个 JDBC SQL 查询模型
您已经了解到 Web 应用程序可以显示一组客户记录并允许您进行可视浏览。在本例中,这些记录来自驻留在 PointBase 数据库服务器上的简单的 SQL 数据库。注意 PointBase 数据库服务器以及其他有用的开发工具如 Tomcat Web 服务器、Ant XML-based 脚本工具和 JUnit 测试工具都绑定到了 Java Studio Enterprise 中。
在对数据库中的记录进行访问之前,您需要启动 PointBase 网络服务器。
启动 PointBase 网络服务器:
接下来,您需要创建一个既代表您要访问的数据,也代表检索该数据的操作的模型。注意 Web Application Framework 是建立在被称为设计模式的一组最优方案之上的。Web Application Framework 在生成应用程序代码时实现这些模式。Web Application Framework 实现的一个主要的模式是 MVC (Model, View, Controller) 设计模式。MVC 设计模式将应用程序的设计分为三个明显的部分:模型 (model)、视图 (view) 和 控制器 (controller)。每个部分的功能简要说明如下:
因为您要访问的数据存在于 SQL 数据库中,所以您需要创建一个 JDBC SQL 查询模型。该模型用于执行对 SQL 数据库的查询(通过 JDBC API)。 创建一个 JDBC SQL 查询模型:
|
| |||
注意一个称为 实际上,您只是关注了存在于 Web Application Framework 组件库中一个组件,本例中指的是 JDBC SQL 查询组件。组件库中包括了四种类型的组件:模型组件、可视组件、命令组件和不可视组件。顾名思义,模型组件提供模型(即,在一个MVC 设计中提供“M”)。JDBC SQL 查询组件所提供的模型使用一个 SQL 数据库中的一个或多个表作为一个数据源。可视组件创建 Web 应用程序的用户界面。命令组件用来封装操作,如请求的处理。非可视组件提供支持,如配置模型实例。在本例中,您将用到可视、命令和非可视组件。 |
创建一个 Pagelet 组件
在本例中,假设您希望显示客户记录,一次显示三条记录,并希望用表的格式显示。要显示数据,您就得创建一个视图。该视图允许您的应用程序在上一步骤中所创建的模型中显示数据。注意 Web Application Framework 组件库包含有可视组件。这些组件创建 Web 应用程序的用户界面,并提供模型的一个视图。
组件库含有许多不同的可视组件,其中的一个是 Basic Container View 组件,也称为 pagelet 组件。一个 pagelet 提供一个 page。要显示数据,pagelet 必须被包含在另外一个称为 Basic ViewBean 的可视组件中,也称为 page 组件。从该角度看,pagelet 组件类似于 Swing 中的 Panel 组件。page 组件类似于 Swing 中的 Frame 组件。和 Panel 组件一样,pagelet 组件是形成复杂可视组件的基础。
pagelet 组件可以包含其他可视组件,并且可重用于整个 Web 应用程序中的其他 pagelet 和 page 中。Web Application Framework 应用程序中的一个单一的逻辑 page 通常与一个 page 组件和一个关联的 JSP 页相对应。当您创建 pagelet 组件(或者 page 组件)时,Application Framework 会给您机会来标识出一个关联的 JSP 页。本例中的下一步 创建一个 Page 组件 将提供更多有关 page 组件的信息。
| 另外一个可视组件是 Basic TiledView 组件((或简单的说,tiled view)。一个 tiled view 是 pagelet 组件的一种,它可用一个重复区域(称为 tile)的数字标识其孩子(即,pagelet 和其他可视组件如显示域)。tile 的例子是表的行或列,或者 tabbed 组件的选项卡。这个功能正是您为了一次显示三条客户记录所需要的。 创建一个 tiled view:
| |||
注意一个名为 同时也为该 pagelet 创建了一个 Java 类。要查看类中的源代码,请双击 |
创建一个 Page 组件
正如上一步骤所述,一个 pagelet 提供了一个 page。您可以使用许多 pagelet 组件(和简单的可视组件如 display field 和 button) 来组成一个更复杂的 page 组件。pagelet 是可视组件,但如果没有一个包含它的 page 组件的帮助,它是不能显示出来的。注意 Swing 中类似的 Panel 组件。一个 Panel 组件只有在包含在一个 Frame 组件中才会显示出来。所以 page 组件位于可视组件层次结构的顶级。 创建一个 page 组件来作为 TiledView pagelet 的父容器可视组件。要创建一个 page 组件,请:
注意一个名为 同时也为该 page 创建了一个 Java 类。要查看类中的源代码,请双击 |
|
添加 Pagelet 到 Page 中
Web Application Framework 是组件友好型的。也就是说,您所创建的组件易于重用。只需要一个指定和单击,就可以将 pagelet 组件(CustomerListPagelet) 添加到 page 组件(CustomerListPage)中。您也可以利用 Web Application Framework API 来手工完成这一任务(要了解有关使用 Web Application Framework API 的详细信息,请参阅 Sun Java Studio 的 Web Application Framework 开发指南)。当您需要更加灵活和更加复杂的显示逻辑时,通过 API 手工完成 Web Application Framework 任务将是十分有用的。然而,在大多数情况下,采用图形化的方法,即指定和单击是快速有效的方法。
添加 CustomerListPagelet 组件到 CustomerListPage 组件中:
|
|
添加导航控件
在现在为止,实际上您已经创建了一个可访问数据库中三条客户记录的 Web 应用程序。如果运行该应用程序,您会发现该页上显示出了三条记录,但却没有办法浏览其余的记录。而本例的目标之一就是允许用户浏览所有的客户记录。为了能够进行导航,您需要向该 page 上添加适当的按钮(如 First、Next、Previous 以及 Last)并对其进行配置,以便使用内置的 WebAction(WebAction 可实现与模型相关联的特定动作)。Web Application Framework 中的 JDBC SQL 查询模型和关联的 WebAction 可完成所有有关记录导航的基础工作。注意记录导航并不局限于基于 SQL 的模型,也可应用于可处理多记录的任何模型类型。记录导航是基于 Web Application Framework API 中可用的模型接口的。要了解有关这些接口的详细信息,请参阅 Sun Java Studio 的 Web Application Framework 开发指南。
不是创建和添加单独的按钮,现在让我们创建并添加一个组件,它含有四个经过预先配置的按钮以完成记录导航功能。请牢记 Web Application Framework (和工具)是基于组件而建立起来的。先进的组件架构可使开发人员创建多种多样的组件。为了简化操作,已经为应用程序 PaginateDemo
创建了一个含有多个组件的组件库。该库中的一个组件可提供必要的按钮,每个按钮都进行了适当的配置以完成一定的导航功能。
要访问组件库,请 下载文件 paginate.jar。
将该 jar 文件保存到您应用程序的 WEB-INF/lib
目录(Web-INF±lib
for Windows)。例如,如果您创建的 PaginateDemo
应用程序位于目录 <home-dir>/jstudio_6ee_user
,则将 jar 文件保存到 <home-dir>/jstudio_6ee_user/WEB-INF/lib 中。
作为回应,Java Studio Enterprise 会识别出一个 jar 文件已经添加到您的 Web 应用程序的 lib
目录(这不会花费太长的时间,也许只有数秒钟,取决于机器的性能)。此外,Java Studio Enterprise 也将该 jar 文件看做一个 Web Application Framework 的组件库。(包含在 jar 文件中的是一个描述文件,它将该 jar 文件指定为一个 Web Application Framework 组件库。) 其中包含的组件将被显示在不同的 Java Studio Enterprise 向导和 Component Palette 中。您将会在 Component Palette 中的 Visual Components 层的底部看到 paginate.jar
组件。
现在组件库是可用的,将库中的导航控件添加到 page 中。
|
|
注意 paginate.jar 组件库只是一个原型。其目的不是为了表示一个成品,而是为了说明 Web Application Framework 组件架构的强大的功能和易于使用的特性。当您 测试 Web 应用程序 时,您会发现当数据库的第一条记录显示时,First (|<<) 和 Previous (<-) 按钮处于无效状态 (正如预期的一样)。然而,如果您单击 Last (>>|) 按钮,从而导航到记录集的最后一条记录时, 您会发现 Next (->) 和 Last (>>|) 按钮不是处于无效状态 (不是预期的)。 |
测试 Web 应用程序
| 现在是测试该 Web 应用程序的时间了。要进行测试,您就需要编译、部署以及运行该 Web 应用程序。然而,在进行这些步骤之前,还需要进行以下工作:
|
要编译、部署和运行该 Web 应用程序,请:
- 在 Explorer 窗口的 Web Application Framework Web Apps 视图中右键单击 Paginate Demo 应用程序节点,然后选择 Compile All。
您将会看到一条说明 Web 应用程序编译成功的消息。
- 再次单击 Paginate Demo 应用程序节点,然后选择 Deploy。
这时会有一个对话窗口显示应用程序部署的进度。如果在 Web 应用程序部署之后对其进行了修改,则需要重新编译和重新部署。
- 在 Explorer 窗口的 Web Application Framework Web Apps 视图中右键单击 CustomerListPage,然后选择 Execute Page。
作为回应,您将会看到一个显示来自示例数据中的一个含有三条客户记录的表的 page。单击导航按钮来显示第一条、最后一条、下一条以及上一条记录。如果您对 Web 应用程序进行了修改并要进行重新的测试,请选择 Execute Page (Redeploy)。这将确保上一个版本的应用程序完全从应用服务器的内存中清除掉。
作为接下来的练习,您可以向同一个 page 中添加记录状态组件 (Record Status Component),并用配置导航组件相同的方式对它进行配置。这将添加一个记录状态消息。例如,当您显示三条记录中的第一条时,该消息显示为“Records 1 to 3”。
参考资料
Introduction to Sun Java Studio Enterprise
Sun Java Studio Enterprise in Action: Building a Session Bean
Sun Java Studio's Web Application Framework Developer's Guide
关于作者
Ed Ort 是 developers.sun.com 和 java.sun.com 的一名职员。发表了许多有关关系数据库技术、编程语言以及 Web 服务的文章。
Reggie Carey 是 Sun Microsystems, Inc. 的高级系统工程师,曾经从事过软件开发和管理。参与过两本有关软件技术书籍的写作,在计算机行业中已有将近 20 年的经历。Reggie 偶尔会对应用服务器和集成开发环境发表武断的观点。
Craig Conover 是 Sun Microsystems, Inc. 的在职工程师,主要从事 Sun Java System Application Framework (JATO) 工程。他有 11 年的软件行业从业经历,从事过 Web 应用程序框架、工具以及应用程序的研究与开发工作。其职业生涯开始于 1996 年,从事过顾问、讲师等工作。