Skip to content

1. 简介

1.1. 概述

本文档的PDF为 |HERE|。

本文的示例可查阅 |HERE|。

本文拟通过示例

  • Java Server Faces 2 框架(JSF2),
  • 以及适用于 JSF2 的 PrimeFaces 组件库,这些内容适用于桌面和移动应用程序。

本文主要面向对 PrimeFaces 和 [http://www.primefaces.org] 组件库感兴趣的学生和开发人员。该框架提供了数十个支持 AJAX 的 [http://www.primefaces.org/showcase/ui/home.jsf] 组件,可用于构建外观和行为与桌面应用程序相似的 Web 应用程序。 PrimeFaces 基于 JSF2 构建,因此有必要首先介绍该框架。此外,PrimeFaces 还提供了专门针对移动设备的组件,我们也将对此进行介绍。

为说明我们的观点,我们将构建一个预约应用程序,并在不同环境中进行演示:

  1. 基于 Glassfish 3.1 服务器,采用 JSF2 / EJB3 / JPA 技术的经典 Web 应用程序,
  2. 采用 PrimeFaces 技术实现的同款 AJAX 化应用,
  3. 最后,采用 PrimeFaces Mobile 技术的移动版本。

每次构建完一个版本后,我们将将其移植到 Tomcat 7 服务器上的 JSF2 / Spring / JPA 环境中。因此,我们将构建六个 EE Java 应用程序。

本文档仅介绍构建这些应用程序所需的必要内容。因此,请勿期待其内容面面俱到——您也确实无法在此找到完整的解决方案。本文档亦非最佳实践汇编。经验丰富的开发人员可能会发现,他们本可以采取不同的做法。我仅希望本文档至少不是一份不良实践的汇编。

若需深入了解 JSF2 和 PrimeFaces,可参考以下资料:

  • [ref1]:Java EE5教程[http://java.sun.com/javaee/5/docs/tutorial/doc/index.HTML],这是Sun官方的Java入门参考资料EE5。 阅读II和[Web Tier]部分,以了解Web技术,特别是JSF。教程中的示例可供下载,它们以NetBeans项目形式提供,可加载并运行,
  • [ref2]:《Core Faces》作者:David Geary 和 Cay S. Horstmann,第三版,McGraw-Hill 出版社,
  • [ref3]:PrimeFaces [http://primefaces.googlecode.com/files/primefaces_users_guide_3_2.pdf] 的文档,
  • [ref4]:PrimeFaces Mobile([http://primefaces.googlecode.com/files/primefaces_mobile_users_guide_0_9_2.pdf])的参考资料。

我们有时会提及 [ref2],以提示读者可通过该书深入了解相关领域。

本文档的编写旨在让尽可能多的读者能够理解。理解本文档所需的先决条件如下:

  • 掌握 Java 语言,
  • 掌握Java开发的基礎知識 EE。

[http://developpez.com]网站提供了满足这些先决条件所需的所有资源。部分资源可在[http://tahe.developpez.com]网站上找到:

1.2. 示例

本文的示例可查阅 |HERE|:

  

要在 NetBeans 中导入项目:

  • 在 [1] 中,打开一个项目,
  • 在 [2] 中,指定文件系统中要打开的项目,
  • 在 [3] 中,项目已打开。

在Eclipse中,

  • 在 [1] 中,导入一个项目,
  • 在 [2] 中,该项目是一个现有的 Maven 项目,
  • 在 [3] 中:在文件系统中指定该项目,
  • 在 [4] 中:Eclipse 将其识别为 Maven 项目,
  • 在 [5] 中,即导入的项目。

1.3. 使用的工具

接下来,我们将使用(2012年5月):

  • NetBeans 7.1.2(集成开发环境),可在 URL [http://www.netbeans.org] 处获取,
  • IDE Eclipse Indigo [http://www.eclipse.org/](其定制版为 SpringSource 工具套件(STS)[http://www.springsource.com/developer/sts],
  • PrimeFaces(3.2 版本)可在 URL [http://primefaces.org/] 中获取,
  • PrimeFaces Mobile 0.9.2 版本,可在 URL [http://primefaces.org/] 中获取,
  • WampServer 适用于 SGBD、MySQL 和 [http://www.wampserver.com/]。

1.3.1. 安装 IDE NetBeans

本文介绍 NetBeans 7.1.2 的安装,该版本可在 URL、[http://netbeans.org/downloads/] 中获取。

 

我们可以选择上述版本的 Java EE,其中包含 Glassfish 3.1.2 和 Apache Tomcat 7.0.22 两个服务器。 前者支持使用 EJB3(企业级 Java Bean)开发 Java 应用程序 EE,而后者支持在不使用 EJB 的情况下开发 Java 应用程序 EE。 随后我们将用 Spring 框架 [http://www.springsource.com/] 替换 EJB。

下载 NetBeans 安装程序后,将其运行。为此需要安装 JDK(Java 开发工具包)和 [http://www.oracle.com/technetwork/java/javase/overview/index.HTML]。除了 NetBeans 7.1.2 之外,还将安装:

  • 用于单元测试的 JUnit 框架,
  • Glassfish 3.1.2 服务器,
  • Tomcat 7.0.22 服务器。

安装完成后,启动 NetBeans:

  • 在 [1] 中,NetBeans 7.1.2 包含三个标签页:
  • [Projects] 标签页显示已打开的 NetBeans 项目;
  • [Files] 标签页显示构成当前打开的 NetBeans 项目的各个文件;
  • [Services] 标签页汇集了 NetBeans 项目中使用的若干工具;
  • 在 [2] 中,激活 [Services] 选项卡,并在 [3] 中激活 [Servers] 分支,
  • 在 [4] 中,启动 Tomcat 服务器以验证其安装是否正确,
  • 在 [6] 中,通过 [Apache Tomcat] 和 [5] 选项卡,可验证服务器是否已正确启动,
  • 在 [7] 中,停止 Tomcat 服务器,

按照相同步骤验证 Glassfish 3.1.2 服务器的安装是否成功:

  • 在 [8] 中,启动 Glassfish 服务器,
  • 在 [9] 中,验证其是否已正确启动,
  • 在 [10] 时,将其停止。

现在我们有一个可运行的 IDE。我们可以开始构建项目了。根据这些项目,我们将详细介绍 IDE 的不同特性。

接下来我们将安装 IDE Eclipse,并在其中注册刚刚下载的 Tomcat 7 和 Glassfish 3.1.2 这两台服务器。为此,我们需要了解这两台服务器的安装目录。这些信息可在两台服务器的属性中找到:

  • 在 [1] 中,Tomcat 7 的安装目录为,
  • 在 [2] 中,Glassfish 服务器的域名文件夹。在 Eclipse 的 Glassfish 配置中,只需提供以下信息:[D:\Programs\devjava\Glassfish\glassfish-3.1.2\glassfish]。

1.3.2. Eclipse 的安装

尽管本文档中使用的并非 Eclipse,但我们仍将介绍其安装过程。实际上,文档中的示例也以 Eclipse 的 Maven 项目形式提供。Eclipse 本身并未预集成 Maven。 为此需要安装一个插件。与其安装原版Eclipse,我们将安装SpringSource工具套件[http://www.springsource.com/developer/sts],该版本的Eclipse预装了大量与Spring框架相关的插件,同时也预装了Maven配置。

  • 访问 SpringSource Tool Suite 网站 (STS) [1],以下载 STS [2A] [2B] 的最新版本,
  • 下载的文件是一个安装程序,它会生成文件树 [3A] [3B]。在 [4] 中,运行可执行文件,
  • 在 [5] 中,关闭欢迎窗口后显示 IDE 的工作窗口。在 [6] 中,显示应用程序服务器窗口,
  • 在 [7] 中,显示服务器窗口。已注册一台服务器。这是一台 VMware 服务器,我们不会使用它。在 [8] 中,调用添加新服务器的向导,
  • 在 [9A] 中,系统提供了多种服务器选项。我们选择安装 Apache 的 Tomcat 7 服务器 [9B],
  • 在 [10] 中,我们指定了随 NetBeans 安装的 Tomcat 7 服务器的安装目录。如果没有 Tomcat 服务器,请使用按钮 [11],
  • 在 [12] 中,Tomcat 服务器将出现在 [Servers] 窗口中,
  • 在 [13] 中,我们启动服务器,
  • 在 [14] 中,服务器已启动,
  • 在 [15] 中,将其停止。

在 [Console] 窗口中,如果一切正常,将获得以下 Tomcat 日志:

mai 26, 2012 8:56:51 AM org.apache.catalina.core.AprLifecycleListener init
Infos: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ...
mai 26, 2012 8:56:55 AM org.apache.coyote.AbstractProtocol init
Infos: Initializing ProtocolHandler ["http-bio-8080"]
mai 26, 2012 8:56:55 AM org.apache.coyote.AbstractProtocol init
Infos: Initializing ProtocolHandler ["ajp-bio-8009"]
mai 26, 2012 8:56:55 AM org.apache.catalina.startup.Catalina load
Infos: Initialization processed in 4527 ms
mai 26, 2012 8:56:55 AM org.apache.catalina.core.StandardService startInternal
Infos: Démarrage du service Catalina
mai 26, 2012 8:56:55 AM org.apache.catalina.core.StandardEngine startInternal
Infos: Starting Servlet Engine: Apache Tomcat/7.0.22
mai 26, 2012 8:56:57 AM org.apache.catalina.util.SessionIdGenerator createSecureRandom
Infos: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [218] milliseconds.
mai 26, 2012 8:56:57 AM org.apache.coyote.AbstractProtocol start
Infos: Starting ProtocolHandler ["http-bio-8080"]
mai 26, 2012 8:56:57 AM org.apache.coyote.AbstractProtocol start
Infos: Starting ProtocolHandler ["ajp-bio-8009"]
mai 26, 2012 8:56:57 AM org.apache.catalina.startup.Catalina start
Infos: Server startup in 2252 ms
  • 仍在 [Servers] 窗口中,添加一个新服务器 [16],
  • 在 [17] 中,Glassfish 服务器未被列出,
  • 此时,请使用链接 [18],
  • 在 [19] 中,选择为 Glassfish 服务器添加适配器,
  • 该适配器下载完成后,返回 [Servers] 窗口,添加新服务器,
  • 此时在 [21] 中,系统会提供 Glassfish 服务器选项,
  • 在 [22] 中,选择随 NetBeans 一起下载的 Glassfish 3.1.2 服务器,
  • 在 [23] 步骤中,指定 Glassfish 3.1.2 的安装目录(请注意 [24] 中显示的路径),
  • 若未安装 Glassfish 服务器,请使用按钮 [25],
  • 在 [26] 步骤中,向导会要求输入 Glassfish 服务器的管理员密码。首次安装时,通常为 adminadmin,
  • 当向导完成后,在 [Servers] 窗口中,Glassfish 服务器将显示为 [27],
  • 在 [28] 中,启动它,
  • 在 [29] 中可能会出现问题。这取决于安装时提供的信息。Glassfish 需要 JDK(Java 开发工具包),而不是 JRE(Java 运行时环境),
  • 要访问 Glassfish 服务器的属性,请在 [Servers] 窗口中双击它,
  • 随后将打开 [20] 窗口,在其中点击 [Runtime Environment] 链接,
  • 在 [31] 中,我们将默认使用的 JRE 替换为 JDK。为此,我们使用链接 [32],
  • 在 [33] 中,将机器上已安装的 JRE,
  • 在 [34] 中,再添加一个,
  • 在 [35] 中,选择 [Standard VM](虚拟机),
  • 在 [36] 中,选择 JDK (>=1.6),
  • 在 [37] 中,将新文件命名为 JRE,
  • 回到针对 Glassfish 的 JRE 选择界面,我们选择新声明的 JRE(即 [38]),
  • 配置向导完成后,重新启动 [Glassfish] 和 [39],
  • 在 [40] 中,它已启动,
  • 在 [41] 中,显示服务器目录结构,
  • 在 [42] 中,访问 Glassfish 日志:
...
Infos: Running GlassFish Version: GlassFish Server Open Source Edition 3.1.2 (build 23)

Infos: Grizzly Framework 1.9.46 started in: 125ms - bound to [0.0.0.0:7676]
Infos: Grizzly Framework 1.9.46 started in: 125ms - bound to [0.0.0.0:3700]
Infos: Grizzly Framework 1.9.46 started in: 188ms - bound to [0.0.0.0:8080]
Infos: Grizzly Framework 1.9.46 started in: 141ms - bound to [0.0.0.0:4848]
Infos: Grizzly Framework 1.9.46 started in: 141ms - bound to [0.0.0.0:8181]
Infos: Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry

Infos: GlassFish Server Open Source Edition 3.1.2 (23) heure de démarrage : Felix (13 790 ms), services de démarrage (2 028 ms), total (15 818 ms)

Infos: JMX005: JMXStartupService had Started JMXConnector on JMXService URL service:jmx:rmi://Gportpers3.ad.univ-angers.fr:8686/jndi/rmi://Gportpers3.ad.univ-angers.fr:8686/jmxrmi
  • 在 [43] 中,我们停止 Glassfish 服务器。

1.3.3. 安装 [WampServer]

[WampServer]是一套用于在Windows机器上基于PHP / MySQL / Apache进行开发的软件包。 我们将仅将其用于 SGBD 和 MySQL。

  • 在 [WampServer] [1] 网站上,选择合适的版本 [2],
  • 下载的可执行文件是一个安装程序。安装过程中会要求提供各种信息。这些信息与MySQL无关,因此可以忽略。 安装完成后将显示 [3] 窗口。运行 [WampServer],
  • 在 [4] 中,[WampServer] 的图标将安装在屏幕右下角的任务栏中 [4],
  • 点击该图标后,将显示菜单 [5]。该菜单用于管理 Apache 服务器以及 SGBD 和 MySQL。 要管理该服务器,请使用选项 [PhpPmyAdmin],
  • 此时将显示如下窗口,

Image

关于 [PhpMyAdmin] 的使用,我们将不做过多详细说明。我们仅演示如何使用它来创建本教程示例应用程序的数据库。