分享

使用 JavaServer Faces 构建 Apache Geronimo 应用程序,第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 构建基本的应用程序

 dinghj 2014-12-05

使用 JavaServer Faces 构建 Apache Geronimo 应用程序,第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 构建基本的应用程序

 2010-05-12 00:00:00 来源:WEB开发网 【减小字体增大字体】  关注谷汶锴的微博
核心提示:开始之前本教程向 Java 程序员介绍如何使用 JSF 组件来构建具有高度交互性的部署在 Apache Geronimo 上的 Java EE 应用程序,本教程假定读者使用 Eclipse 集成开发环境(IDE)作为开发平台,使用 JavaServer Faces 构建 Apache Geronimo 应用程序,第 1

开始之前

本教程向 Java 程序员介绍如何使用 JSF 组件来构建具有高度交互性的部署在 Apache Geronimo 上的 Java EE 应用程序。本教程假定读者使用 Eclipse 集成开发环境(IDE)作为开发平台。

关于本教程

本教程介绍了 Apache Geronimo,它是一个纯 Java EE 应用服务器。还介绍了使用 Eclipse IDE 和 Apache MyFaces(这是一个开放源码的 JSF 框架实现)的 JSF 编程环境。这里将会开发一个开发者论坛注册页面的前端,并学会如何使用常见的输入方法和数据验证技术。

关于本系列

这是一个关于使用 JSF 构建 Apache Geronimo 应用程序的教程,教程分五部分,这是其中的第 1 部分。在后面的系列教程中包括以下几个部分:

第 2 部分:在 JavaServer Faces 中使用 Tomahawk 展示了如何在 Geronimo 应用程序中集成 Apache Tomahawk。Tomahawk 提供了几个定制组件,可跟 JSF 100% 兼容。

第 3 部分:在 JavaServer Faces 中使用 ajax4jsf 演示了如何使用 Sun 的 ajax4jsf 工具使 Geronimo 应用程序获得与 Ajax 的兼容性。

第 4 部分:使用 ADF Faces 扩展 JSF 教您怎样将 ADF Faces 中的组件集成到 Geronimo 应用程序中。Oracle 的 ADF Faces 是构建于 JSE 之上的一组非常丰富的 UI 组件。

第 5 部分:将 JSF 应用程序与 Spring 集成 展示了如何将 JSF 应用程序与 Spring 框架集成。Spring 是一个流行的框架,它使 Geronimo 开发者能更容易地构建 Java EE 应用程序。

系统需求

为了学习本教程,需要有下列一些工具:

Geronimo,Apache 的 Java EE 服务器项目。根据需要,Geronimo 可提供 Tomcat 和 Jetty 两种风格。我们采用的是 Jetty 风格(1.1 版),因为它小一点。

MyFaces ,Apache 的 JSF 实现。请从 Apache 下载内核版本(不带 Tomcat)。本教程中我们使用的版本是 1.1.3 版。

一个空的 MyFaces Web 应用程序。请从 coreservelets.com 这个Web 站点下载 Marty Hall 的 jsf-blank-myfaces-minimal.zip 归档文件。该归档文件包括一个空的 Web 应用程序,其中含有基本 MyFaces 应用程序所必需的最小的 MyFaces 库,几乎可以原封不动地转到 Geronimo 上去。是的,两次下载了这些 .jar 文件(一次在这里,一次在 MyFaces 内核归档文件那里),因为仍需要从 MyFaces 归档文件里获得文档和您可能会感兴趣的其他可选 JAR 文件。

Eclipse,这是一个可支持大量语言和平台的可扩展开放源码集成开发环境(IDE)。

Eclipse Web 工具平台(WTP) ,它给 Eclipse 添加了对 XML 的支持和对 JSF 的基本支持。

将 Java 1.4 或更新版本 安装到您的系统中。Eclipse 二进制文件中带有它自己的 Java 运行时,但 Geronimo 和 MyFaces 则没有(带运行时会使下载归档文件的尺寸急剧变大)。在本教程中,我们使用 Mac OS X 10.4 所用的 Java 1.5,但平台应该不是问题。可以从 Sun Microsystems 或 IBM? 处获得 Java 技术的文件。

概述

在创建 Web 应用程序时,Java Servlet 和 JavaServer Pages(JSP)技术提供了一个性能强大的环境,但其中并没有给出创建用户界面(UI)的标准方法。您必须全靠自己来管理 JSP 页面中所有表单的状态,而且还必须把进来的 HTTP 请求转发给适当的事件处理程序。如果站点的 GUI 很复杂,随应用程序而产生的复杂的基础设施会变得难以管理。此外,站点还会有些特有的行为以及其他一些细节问题,使得您构建的代码很难被重用。JSF 提供了一种简化高层任务(例如 UI 组件的排列和重用)的现成工具,并把组件的状态和输入处理跟决定应用程序行为的对象关联了起来。

Apache Geronimo

Apache Geronimo 是一个开放源码的(采用 Apache Software Foundation 许可协议)的 Java EE 服务器,其设计目的是尽可能增强应用程序的兼容性和性能。它的当前版本(到写本文时为止是 1.1 版)通过了 Sun 的 Java 2 Platform, Enterprise Edition(J2EE)的 Technology Compatibility Kit(TCK)测试,这表示它符合 Sun 的规范,跟 J2EE 服务器完全兼容。

与 Jetty 或 Tomcat Web 服务器打包使用时,Geronimo 非常易于启用和运行,而且它已经部署了一个极其有用的管理界面应用程序。不需要以任何方式重新启动或重新配置服务器,就可以上载并启动 Web 应用程序。

MyFaces

MyFaces 是第一个免费的开放源码的 JSF Web 应用程序框架实现。JSF 类似于流行的 Struts 框架,实现了模型 - 视图 - 控制器(MVC)模式,但是它有一些功能是 Struts 没有提供的。JSF 是由 Java Specification Request #127(JSR 127)规范所定义的,它被 Web 应用行业的专家批准成为 Java Community Process(JCP)的规范。

Eclipse

Eclipse 是按照一个可扩展的基于插件的架构而构建的,它是一个开放源码的集成开发环境(IDE)。这样,只要一个 IDE 就能够支持做任何工作所需的几乎任何语言、任务、平台和数据文件。这样,将可以从 Java 对开发的出色支持和 WTP 项目的插件中获益。WTP 提供了支持 XML 的编辑器,它还提供了实验性的对 MyFaces 的支持。

我们来很快地看一下我们的应用程序示例。

应用程序示例

在本教程中,将使用 Geronimo 部署一个简单的用 MyFaces 写的 Web 应用程序,它为您创建自己的 Web 应用程序提供了一个很好的开端。将为一个假想的面向开发者的讨论区论坛构建一个注册过程,可参见本教程末尾的 图 19。

诚然,这不是 Slashdot.org 或是什么可怕的论坛,但这里的东西确实是每个人都熟悉的(这就像注册到某个论坛、邮件列表单或 beta 测试的情况)。

在下一节,您将了解所有需要做的工作,并为这个应用程序创建一个 Eclipse 项目。

创建项目

首先,为使用 MyFaces 的应用程序创建一个准备放到 Geronimo Java EE 服务器上的 Eclipse 项目。这一节将完成所有不需要费力的工作(创建 Eclipse 项目、进行必要的设置、导出 .war 文件并把它部署到服务器上)。

在 Eclipse 中进行必要的设置

为 Geronimo 服务器创建新的 MyFaces 应用程序时,要做的第一件事就是创建一个 Eclipse 项目。注意,为了继续进行这部分的教程,必须先安装好 Eclipse,并通过 Eclipse 的更新管理器安装好 WTP。安装完 Eclipse 后,可到 WTP 的 Web 站点了解如何安装 WTP。

启动 Eclipse,然后从菜单选择 File > New > Project。会弹出一个新项目向导,如 图 1 所示。


图 1. Eclipse 新项目向导
使用 JavaServer Faces 构建 Apache Geronimo 应用程序,第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 构建基本的应用程序


在 “Web” 处选择 Dynamic Web Project。这样将会创建一个项目,它按下面的结构存放一个 Web 应用程序:

build

classes

src

WebContent

META-INF

MANIFEST.MF

WEB-INF

lib

faces-config.xml

web.xml

除 faces-config.xml 文件外,Web 应用程序开发者应该对 WebContent 文件夹中的文件和目录很熟悉。Java 类的源代码会存到 src 文件夹中,而构建输出文件(例如 .class 文件)会创建在 build 文件夹中。

单击 Next,显示 New Dynamic Web Project 向导(见 图 2) 。


图 2. 创建一个动态 Web 项目
使用 JavaServer Faces 构建 Apache Geronimo 应用程序,第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 构建基本的应用程序


填入项目名称,并从下拉配置列表中选择 Java Server Faces 1.1 Project。创建一个名为 devSignup 的项目。

单击 Next 显示 New Dynamic Web Project 向导的 Project Facets 面板。这里不需要做任何事,所以再次单击 Next 显示 Web Module 面板。

这个面板上的 Context Root 域决定了部署到 Web 服务器上时应用程序目录的名称。默认的目录名与项目名称相同,在这个样例中为 devSignup 。如果不喜欢这样,就改个目录名,然后单击 Next 显示 JSF Capabilities 面板(见 图 3)。在 JSF Capabilities 面板上可以定义几组在项目中使用的 JSF JAR。为了便于部署,也可以在导出这个 Web 应用程序时让 Eclipse 自动包含这些 JAR。


图 3. 给项目加入 JSF 兼容性
使用 JavaServer Faces 构建 Apache Geronimo 应用程序,第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 构建基本的应用程序

在面板顶部,选中 Deploy jars to WEB-INF/lib,这是因为创建应用程序时希望包括 JSF 库。

单击这个复选框正下方的 New 按钮,显示 Create JSF Implementation Library 对话框(见 图 4)。这样就可以设置一组在 Web 应用程序中可以重用的标准 JSF JAR。


图 4. 创建一个 JSF 实现库
使用 JavaServer Faces 构建 Apache Geronimo 应用程序,第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 构建基本的应用程序


给这个库起一个描述性的名字(我起的名字是 MyFaces(Core))。

从 Version Supported 下拉列表中选择 v1_1,因为 Apache MyFaces 支持 1.1 版的 JSF 规范。

单击 Add 按钮,选择要包括在这个库的定义里的 JSF .jar 文件。库中包括的文件列在下面。

commons-beanutils-1.7.0.jar

commons-codec-1.3.jar

commons-collections-3.1.jar

commons-digester-1.6.jar

commons-el-1.0.jar

commons-lang-2.1.jar

commons-logging-1.0.4.jar

jstl-1.1.0.jar

myfaces-api-1.1.3.jar

myfaces-impl-1.1.3.jar

这是在当前的 MyFaces 实现中最精简的一组 JSF 库(有些文档中在这个清单里没有 jstl.jar ,但这是一个必需的文件)。在最小空应用程序归档文件中,这些 JAR 的副本省略了版本号(而且它带了两个额外的库:commons-validator.jar 和 jakarta-oro.jar,它们分别提供数据验证类和对正则表达式的支持)。

这里需要注意的一点是:在 JSF Implementation 库中将包含对您的 .jar 文件的完全路径的引用;该库不会把这些文件拷贝到您的工作区里。这样做是有益的,因为您不必为每个项目都生成这些 JAR 文件的一个副本;但另一方面,这也有坏处,因为这样就不能利用软件配置管理(SCM)系统,甚至也无法通过导出 Eclipse 项目,把这个项目移交给另一个开发者。 

添加完所需的 .jar 文件后,单击 Finish 创建一个 JSF Implementation 库。

已经完成了 New Dynamic Project 向导的设置,所以单击 Finish 创建一个 Web 应用程序骨架。Eclipse 自动转到 Java EE 透视图,目前这对于您的 JSF 开发没有什么帮助。WTP 中对 JSF 的支持目前是 0.5 版,所以还不能指望会有无缝的集成。

从菜单中选择 Window > Close Perspective ,切回到 Resource 透视图。

在 Navigator 视图下把项目展开(见 图 5 ),观察向导创建的目录结构和文件。


图 5. 一个有待开发的新 Web 应用程序
使用 JavaServer Faces 构建 Apache Geronimo 应用程序,第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 构建基本的应用程序

现在就可以把应用程序放到服务器上试试了。

把东西都拼起来

现在已经创建了一个基本的 Web 应用程序,还需要再加一些东西进去,这样才能让它成为一个真正的(基本)Web 应用程序,并使它适于部署到一个 Geronimo 服务器上。

编辑 web.xml 文件。如果 Eclipse 的 XML 编辑器以设计模式启动(看见底部的选项卡了吗?),单击 Source 选项卡,就可以直接编辑 XML 文件了。可以将它编辑成类似于 清单 1 所示。

清单 1. 的简单应用程序的 web.xml 文件

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="devSignup" version="2.4" 
   xmlns="http://java./xml/ns/j2ee" 
   xmlns:xsi="http://www./2001/XMLSchema-instance" 
   xsi:schemaLocation="http://java./xml/ns/j2ee 
   http://java./xml/ns/j2ee/web-app_2_4.xsd"> 
   <display-name>devSignup</display-name> 
   <welcome-file-list> 
      <welcome-file>index.jsp</welcome-file> 
   </welcome-file-list> 
</web-app> 

在 <web-app> 标记中,把 id 属性从其默认值(WebApp_ID)改过来;这是在这个服务器上启动 Web 应用程序的 URL。我会采用 devSignup 来代替它。还需要加入 xmlns 声明和 xsi:schemaLocation 声明。

删掉 <servlet> 和 <servlet-mapping> 块,并从 <welcome-file-list> 部分删掉一些 <welcome-file> 标记。<welcome-file> 标记定义了显示 Web 应用程序时将使用的文件(按指定的顺序)。例如,默认的清单包括 index.html 、index.htm、index.jsp 和其他一些文件。去掉除 index.jsp 外的所有文件,然后就要创建一个 index.jsp 文件。

右键单击 WebContent 文件夹,然后从上下文相关菜单选择 New > Other 显示新建文件向导。

展开 Web 组,选择 JSP,然后单击 Next。

将文件名设为 index.jsp,然后单击 Finish 创建新的 index.jsp 文件。

如 清单 2 所示编辑 index.jsp。这是 “ Hello World ”程序,没什么有用的 JSP 或 JSF 交互,所以可以放心不会有什么问题。

清单 2. 人人喜欢的程序,JSP 风格

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
  pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www./1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; 
 charset=ISO-8859-1" /> 
<title>Developer Signup</title> 
<jsp:useBean id="datetime" class="java.util.Date"/> 
</head> 
<body> 
<p> 
Hello, world! 
</p> 
<p> 
The server's time is ${datetime}. 
</p> 
</body> 
</html> 

这还不完全是一个基本的 “ Hello World ”程序,因为用 java.util.Date bean 提供了当前日期和时间。

这个拼图的最后一块是 Geronimo 的部署描述符。右键单击项目中的 WEB-INF 文件夹,然后从上下文相关菜单中选择 New > Other。

在新建文件向导里,展开 XML 组,选择 XML,然后单击 Next。

确保选中 Create XML file from scratch,然后单击 Next。

把文件名改为 geronimo-web.xml,然后单击 Finish 创建一个新文件并编辑它。

按 清单 3 所示编辑 geronimo-web.xml。这个基本的 Geronimo 部署文件只是告诉服务器在哪里发布这个 Web 应用程序(与我们在 web.xml 中已做过的很类似)。

清单 3. Geronimo 的部署文件

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://geronimo./xml/ns/j2ee/web-1.1" 
     xmlns:naming="http://geronimo./xml/ns/naming"> 
  <context-root>/devSignup</context-root> 
</web-app> 

在这个示例中,我把 <context-root> 设置为 /devSignup,这样就可以在服务器上的 /devSignup 下看到这个应用程序了。

挺容易,对吧?现在需要把最初的 Web 应用程序导出为一个 .war 文件,并把它部署到服务器上。继续阅读,学习怎么做到这些!

Web 应用程序风格的 “Hello World” 程序

现在已创建了一个项目,一个基本的欢迎页面以及一个 Geronimo 部署描述符,可以创建一个 .war 文件把它部署到服务器上。

在 Navigator 视图内右击项目的名字(这里是 devSignup),然后从上下文相关菜单中选择 Export。

在 Export 向导中,展开 Web 组,选择 WAR file ,然后单击 Next 显示 WAR Export 面板(见 图 6)。


图 6. 导出一个 .war 文件
使用 JavaServer Faces 构建 Apache Geronimo 应用程序,第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 构建基本的应用程序


由于是在导航器中导出项目的,所以 Web 模块已经被正确地选择。单击 Browse 按钮为 .war文件选择一个目的目录和文件名。将它起名为 devSignup.war 存到桌面上,这样比较容易找到它。然后把它部署到服务器上。

单击 Finish 导出这个 .war 文件。

如果不熟悉一般的 IDE(或只是不熟悉 Eclipse ),您可能不相信它会正确地工作。如果检查 .war 文件的内容,看到的东西应该类似于 清单 4 所示。

清单 4. .war 文件的内容

./index.jsp 
./META-INF 
./META-INF/MANIFEST.MF 
./WEB-INF 
./WEB-INF/classes 
./WEB-INF/faces-config.xml 
./WEB-INF/geronimo-web.xml 
./WEB-INF/lib 
./WEB-INF/lib/commons-beanutils-1.7.0.jar 
./WEB-INF/lib/commons-codec-1.3.jar 
./WEB-INF/lib/commons-collections-3.1.jar 
./WEB-INF/lib/commons-digester-1.6.jar 
./WEB-INF/lib/commons-el-1.0.jar 
./WEB-INF/lib/commons-lang-2.1.jar 
./WEB-INF/lib/commons-logging-1.0.4.jar 
./WEB-INF/lib/jstl.jar 
./WEB-INF/lib/myfaces-api.jar 
./WEB-INF/lib/myfaces-impl.jar 
./WEB-INF/web.xml 

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多