ApacheGeronimo和Spring框架,第2部分:构建第一个应用程序

简介:了解如何在 Apache Geronimo 上使用 Spring 框架创建基本的、没有任何修饰的应用程序, Spring 框架是在 Apache 许可协议下开发的,是一个分层的 Java™ Platform, Enterprise Edition (Java EE) 和 Java 2 Platform, Enterprise Edition (J2EE™) 应用程序框架。本系列 教程共分为六部分,涵盖了 Spring 从前端到后端的全部内容,包括如何用 Apache Geronimo 实现其功 能的内容。第 1 部分 介绍了 Geronimo 应用服务器和 Spring 框架,包括控制反转(Inversion of Control,IoC)和构成 Spring 框架的模块。本期教程是本系列教程的第 2 部分,您将开发、配置和部 署第一个基于 Spring 框架的应用程序。您还将看到安装 Geronimo 是多么容易以及 Geronimo 的 Web 控制台如何简化 Web 应用程序的部署和管理操作。

开始之前

本系列教程适用于需要了解 Spring 框架的更多信息以及如何在 Apache Geronimo 应用服务器上使用 Spring 框架的强大功能的 Java EE 开发人员。

关于本系列教程

本系 列教程共分为六个部分,向您介绍了 Spring 框架及 Spring 框架怎样与 Geronimo 结合使用。我们将从 检验各种 Spring 框架方法及其怎样与 Geronimo 服务器结合使用入手。在整个系列教程中,您将开发和 部署个人电话本应用程序。该应用程序包括以下功能:

显示电话本

显示每个条目的详细信 息

向电话本中添加一个新条目

编辑、修改和删除条目

第 1 部分 介绍了 Spring 框架的各个模块,并介绍了每个模块与在 Geronimo 应用服务器上开发 Java EE 应用程序的关系。该部 分还说明了 Spring 框架所基于的方法以及这些技术都使用的核心模式 IoC。

第 2 部分,也就是此部分回顾了如何使用 Spring 框架在 Geronimo 上构建第一个骨架系统应用程序 。

在第 3 部分中,您将采用通过 Apache Derby 数据库添加 Java 数据库连接 (JDBC™) 支持来扩展在第 2 部分中获得的 Geronimo 应用程序。您还将了解如何将对象关系映射集成到使用 iBatis 的应用程序中。

在第 4 部分中,您将面对 Spring 面向方面编程 (AOP) 和 Spring Web 框架。使用 Spring AOP,任何受 Spring 框架管理的对象都可变为面向方面,并且本教程利用了通过 Spring AOP 提供的声明式事务管理服务。

第 5 部分介绍了 Spring Model-View-Controller (MVC)。该教程向您介绍了 Spring MVC 框架及 Web 视图,使您可以了解 Spring MVC 的入门知识。

在本教程结束的第 6 部分,介绍了如何通过 Spring 框架使用 JavaServer Page™(JSP™)、Velocity、Tile 和 PDF 导出功能。您将使 用和体验 Spring MVC 内置的各种 Web 视图。

关于本教程

本教程将承接 第 1 部分,向 您介绍如何创建使用 Spring 框架的基本应用程序。然后将把该应用程序部署到 Geronimo 应用服务器上 。

在本教程中,您将:

获得要在本系列中开发的示例应用程序的说明。

安装 Geronimo 和 Spring 框架。

创建只有骨架的应用程序。

将应用程序部署到 Geronimo 上 。

测试应用程序。

先决条件

本教程假定您熟悉面向对象的编程 (OOP) 并且熟知 Java EE 术语。了解面向方面编程更佳,但不作硬性要求。

系统要求

您的系统需要至少满 足以下要求才能继续学习本系列教程:

Apache Geronimo —— Geronimo 是来自 Apache 的 J2EE 认证的应用服务器。

Spring 框架 —— 本教程中使用了 1.2.8 版。

Apache Ant —— 下载并安装 Apache Ant。您将需要用 Ant 来编译代码并为示例应用程序创建 .war 文件。

Sun 的 Java 1.4.2 —— 确保它安装并运行在您的系统上。

对于 Microsoft® Windows® 用户:Windows 2000、Windows Server 2003 或 Windows XP。

对于 Linux® 用户:装有经过测试的 Sun JDK 1.4.2 的几乎所有 Linux 都受支持。

足够的硬件配置:512MB RAM (虽然配有 256MB RAM 即可运行) 以及用于安装 Geronimo 和 Spring 框架的大约 200MB 可用磁盘空间。

每个教程都会有具体教程所需的其他工具及 API 列表。

个人电话本示例应用程序

在本节中,您将看到将在本系列教程的其他部分中构建的示例应 用程序的概要介绍,包括本系列教程的第 3 部分至第 6 部分所需的更多详细信息。

应用程序概 览

您要开发并部署的应用程序是个人电话本,它类似于 Web 联系人管理程序。该应用程序的功能 十分简单,您可以将精力集中在开发应用程序所使用的技术上。该应用程序的基本功能包括:

显 示电话本

显示每个条目的详细信息

向电话本中添加新条目

编辑、修改和删除条目

第 3 部分:集成 DAO 和 ORM

在第 3 部分中,并没有对用户界面 (UI) 做大的改动,但所显示的数据将从数据库中读取。您将看到 Spring 支持持久性的两种不同方法,并将使用 JDBC 来访问 Geronimo 附带的 Apache Derby 数据库。 第 3 部分将介绍以下内容:

使用 iBatis 对象关系映射 (ORM) 将数据映射到对象上

介绍 Derby 数据库

使用 Spring Data Access Objects (DAO) 将数据保存到 Derby 数据库中

将 DAO 和 ORM 集成到应用程序中

第 4 部分:将 Spring AOP 与 Web Flow 结合使用

在第 4 部分中,您将了解 Spring 面向方面编程 (AOP) 及如何将它引入 Geronimo 应用程序中。教 程将演示如何在应用程序中使用事务。您还要将应用程序的导航功能更改为受 Spring Web Flow (SWF) 控制。第 4 部分将介绍以下内容:

在后端,您将学习如何使用 Spring AOP 所提供的声明式事务管理服务。

使用 Spring Web Flow 为该应用程序定义确切的页面流。

第 5 部分:学习在应用程序中使用 Spring MVC

在本节中,您将使用 Spring 的 MVC 设计模型开发应用程序。第 5 部分深入介绍了 Spring 的 MVC 模块提供了哪些功能,并将举例说明 MVC 模块比其他框架 (如 Struts) 功能强大之处。本教程还将演 示使用由 Spring 框架提供的 MVC 控制器时,将 MVC 模块部署到 Geronimo 上是多么轻松。在第 5 部 分中,将不会对 UI 做很多更改。但是您将学习:

使用其他 Spring MVC 控制器重新部署应用程序。

深入了解 Spring Web MVC 控制器和处理程序。

第 6 部分:Spring MVC:使用 Velocity、Tiles 及 PDF 导出

在本系列教程的最后一部分,您将学习在 Spring MVC 模型中如何使用 JSP 和标记库。您还将学习 Spring 与模板引擎 Velocity 和另一个模板系统 Tiles 集成的方法。在第 6 部分中,您将学习:

添加或修改已有应用程序,以说明使用这些技术的方法。

了解如何导出 PDF。

事件流

下一节将帮助您了解如何处理对应用程序的请求,并举例说明事件流和所用的容器。

事件流

图 1 显示了电话本应用程序将如何处理请求。在安装 Geronimo 时,Tomcat 容器已被封装到 Geronimo 内核中。Tomcat 提供了所有与 Web 相关的服务,如 Servlet 引擎,在 HTTP 端口 8080 上侦 听外来连接的 Web 服务,JSP 处理程序及其他服务。本教程中的应用程序并未使用任何事务,但事务服 务是 Geronimo 非常重视的服务之一。Geronimo 提供的其他重要服务包括安全管理、JDBC 服务和 ORM 服务。

图 1. 设计在 Geronimo 上显示应用程序请求的请求流

构成应用程序的组件

将要在本教程中开发的电话本应用程序含有两个用于表示逻辑和 HTML 代码的 JSP,以及用作 MVC 架 构中的典型控制器及同时用作表示层和模型层之间接口的 Servlet。

还有两个配置文件:

web.xml 是 Tomcat 的 Web 应用程序上下文部署描述符 (请记住,您要将 Geronimo 与 Tomcat 容 器结合使用),Tomcat 将把应用程序的相关信息告知 Geronimo。

第二个配置文件 phonebook-servlet.xml 是由 Spring 容器使用的。此配置文件为应用程序定义了应 用程序上下文。

您的 Servlet PhonebookController.java 位于 phonebook/src/phonebook/controller 目录中,JSP 位于 phonebook/web/WEB-INF/jsp 目录中。

库目录中包含编译 Java 类所需的 JAR。您需要两个 JAR:

Servlet-api.jar,它包含 Servlet 2.2 规范的参考实现,位于本教程的源 .zip 文件中。

Spring.jar 是必需的,因为您的 应用程序使用 Spring 框架类,并且它是 Geronimo 发行版附带的。

注:您需要将 Spring.jar 从 /reposiTory/springframework/jars 复制到库目录中,否则将无法编译代码 。

source .zip 文件还提供了 Ant 构建文件,因此,您可以轻松地编译和创建 .war 文件,该 .war 文件可用于将应用程序部署到 Geronimo 上。

图 2 显示了此应用程序源文件的目录结构。

图 2. 应用程序源代码的结构

安装 Geronimo 和 Spring 框架

在本节中,您将学习如何安装、配置和运行最新版的 Geronimo。本节还介绍了如 何安装 Spring 框架。

下载 Geronimo

您可以从 apache.org 项目的 Geronimo 主页中下 载 Geronimo 。有两个版本可供下载:一个适用于 Jetty,另一个适用于 Tomcat。请下载附带 Tomcat 的 1.1 版 (我选用 Tomcat 的原因是认为它更易于配置和使用)。您可以选择与系统兼容的文件压缩格 式;您可以选择 .zip 或 tar.gz。

注:如果需要将 Geronimo 部署为企业应用程序,您可在 IBM® Support for Geronimo 站点获得详细的系统要求 。

解压缩发行版

在下载发行 版后,请将其解压缩到硬盘上。它将创建一个 geronimo-1.1 目录。请调用这个 GERONIMO_HOME (例如 ,我系统上的 GERONIMO_HOME 是 K:/geronimo-1.1)。

运行它!

只要确保 JAVA_HOME 已正确设置并且 /bin 在系统路径中。此时,您已经完全能 够运行服务器了。现在,打开命令窗口 (对于 Linux 用户,则为 bash shell),转到 /bin 目录,然后键入以下命令:java -jar server.jar。

另外,您还可以使用以下命令来启动 Geronimo 应用服务器: /bin/startup.bat 或 /bin/geronimo.bat start。

如果运行正常,命令行窗口应当类似 清单 1 所示。

清单 1. 启动 Geronimo 后的命令行窗口

K:/geronimo-1.1/bin>java -jar server.jarBooting Geronimo Kernel (in Java 1.4.2_04)...Starting Geronimo Application Server v1.1[**********************] 100% 16s Startup complete  Listening on Ports:   1099 0.0.0.0 RMI Naming   1527 0.0.0.0 Derby ConnecTor   4201 0.0.0.0 ActiveIO ConnecTor EJB   4242 0.0.0.0 Remote Login Listener   8009 0.0.0.0 Tomcat ConnecTor AJP   8080 0.0.0.0 Tomcat ConnecTor HTTP   8443 0.0.0.0 Tomcat ConnecTor HTTPS   9999 0.0.0.0 JMX Remoting ConnecTor   61616 0.0.0.0 ActiveMQ Message Broker ConnecTor  Started Application Modules:   EAR: geronimo/webconsole-tomcat/1.1/car   RAR: geronimo/activemq/1.1/car   RAR: geronimo/system-database/1.1/car   WAR: geronimo/remote-deploy-tomcat/1.1/car   WAR: geronimo/welcome-tomcat/1.1/car  Web Applications:   http://tez:8080/   http://tez:8080/console   http://tez:8080/console-standard   http://tez:8080/remote-deployGeronimo Application Server started

注:您可以按 Ctrl-C 组合键来停止服务器;服务器应当会顺序关闭。另外,您也可以使用以下命令 停止服务器:/bin/geronimo.bat stop 或 /bin/shutdown.bat。

查看服务器的运行状态

现在,快速查看服务器是否在正常运行。您可以访问 URL http://localhost:8080/console 转到 Geronimo Web 控制台进行测试。您的窗口应当如 图 3 所示。

图 3. Geronimo Web 控制台窗口

注:您必须以管理员用户身份登录来访问管理控制台。默认的用户名为 system,密码为 manager。

恭喜您!此时,您已使 Apache Geronimo 应用服务器启动并运行了起来,但愿您还没有忙到出汗!

下载 Spring 框架

安装 Spring 十分容易,其安装步骤与 Geronimo 的安装步骤类似。第一步是从 Spring 框架站点下 载最新的 Spring 二进制文件。

您将使用 Spring 框架 1.2.8,它是编写本教程时最新的产品版本。单击下载链接后,您将有两个选 项:一个附带依赖性,另一个仅附带核心 Spring 框架。请下载 SpringFramework-1.2.8-with- dependencies.zip;该文件包含整个系列教程中开发样例应用程序所需的所有 Spring 模块。

解压缩 Spring 发行版

下载后,您可以将 Spring 发行版解压缩到 Geronimo 的安装磁盘。默认情况下,将创建名为 spring-framework-1.2.8 的目录。您将引用此目录作为 (在我的安装上,此目录 名为 K:/spring-framework-1.2.8)。

现在,您已经满足了使用 Spring 框架所需的全部条件。在本教程中,由于将构建只有骨架的应用程 序,因此只需 /dist 目录中的 spring.jar,此 jar 文件将与应用程序一起部署。

构建骨架应用程序

现在,您已经安装并运行了 Geronimo,可以开始开发应用程序了。

应用程序概览

由于这可能是您部署到 Geronimo 上的第一个 Spring 应用程序,因此请尽量使它小而简单。这个骨 架应用程序的基本元素包括:

电话本的主页。

用于显示拒绝信息的页脚页面。

主页上的电话条目列表。

三个按钮,目前这三个按钮不能起任何作用。

页面上显示的所有数据都将是静态的 —— 您无需担心数据项的格式、验证或会话 (其他内容除外) 。请记住,本教程的主要目的是要说明如何在 Geronimo 上开发和部署第一个 Spring 骨架应用程序,因 此,您不必在此投入过多精力。

应用程序布局

本节将让您了解应用程序中有哪些文件以及这些文件在源 .zip 文件中的位置。本教程假定您从头开 始,并在手动创建目录结构。

在名为 workspace/phonebook 的 目录中创建一个工作目录。建议在 workspace/phonebook 目录下创建所有应用程序源文件和构建文件。

开始开发名为 home.jsp 和 footer.jsp 的两个 JSP 中定义的应用程序视图。要执行此操作,您必须 在名为 web/WEB_INF/jsp 的 workspace/phonebook 目录中创建子文件夹。

下一步是创建用于将应用程序部署到 Geronimo 上的配置文件。由于您使用 Tomcat 作为 Geronimo 内的 Web 容器,因此必须让 Tomcat 知道该应用程序。为此,您需要按照 Tomcat Web 应用程序部署规 范的要求编写 web.xml 文件。此文件将放在上一步中创建的 WEB-INF 目录中。

确定 Web 应用程序配置后,下一步是根据 Spring 框架容器在 Geronimo 中运行的需要引入依赖性。 根据 Spring 规范,只有一种方法能完成此操作。必须创建一个新的配置文件,该配置文件的名称取决于 您的 Servlet 名称。对于您的应用程序,该配置文件将是 phonebook-servlet.xml,并且它将放在同一 WEB-INF 目录。

最后,定义应用程序中惟一一个 Java 类:PhoneController.java。它用于实现 Spring 框架所提供 的一个基本控制器。此 Java 类将被定义到 phonebook/src 目录中。

构建电话本应用程序

此应用程序的起始页面将被定义为 home.jsp。它包含一个电话本条目列表和三个按钮。该页面还包括 已在 footer.jsp 中定义的页脚。配有不同页脚的目的是要保存代码以实现主页整洁。它还让您可以选择 更改拒绝信息,而不影响主页布局。看看每个页面。

home.jsp

这是电话本应用程序的主页。在本教程中,该主页包含的是静态信息 (在以后的教程中将改为从数据 库中东态读取数据)。它还包括 footer.jsp。清单 2 显示了 home.jsp 的 JSP 代码。home.jps 位于 /web/WEB-INF/jsp。

清单 2. home.jps 的 JSP 代码

             Phone Book                Phone Book                           Select       Name       Home Phone       Work Phone       Cell Phone       Email                                Adam Clark         1 978 234 7839         1 978 134 7830         1 978 378 7578         adam@clark.com                                Charlie Smearlas         1 617 456 6783         1 617 290 3556         1 617 980 2467         charlie@gmail.com                                Don Brownie         1 345 333 5680         1 533 290 3556         1 678 980 2837         don@brownie.com                                Harry potter         1 221 456 6453         1 567 389 2356         1 908 354 2467         harry@potter.com                                                                                         </html>

如您在 清单 2 的 JSP 代码中所见,首先将创建包含所有电话本条目的表。表中的每一行都有四列, 包括名称、家庭电话号码、工作电话和移动电话号码。您还会注意到,行定义后跟着要使用实际值定义的 表头。您将在此表中定义条目并用数据填充这些条目。在本系列教程的下一部分中,您将了解如何从数据 库动态填入这些值。

这个 JSP 页面中另一个值得注意的一点是三个按钮的定义。这三个按钮不起任何作用。您在此处所做 的工作只是为了以后的功能创建基础。

在此 JSP 的末尾,添加一个调用以包括 footer.jsp,该文件没什么用只包含一个声明。您可以在此 处轻松地添加该文件,但如果将该文件放在一个单独的 JSP 中,可使 HTML 代码更加模块化。

footer.jsp

页脚页面向主页中添加了一个声明。拥有单独的页脚页面将帮助您把这一段 HTML 代码轻松地添加到 为应用程序定义的任何 JSP 上。您将看到应用程序的所有页面中都使用了页脚页面。如果需要对声明信 息作任何更改,则只需更改一个文件而无需在多个不同位置作出更改。清单 3 显示了 footer.jsp。 footer.jsp 位于 /web/WEB-INF/jsp。

清单 3. footer.jsp

  

This example is developed to demonstrate the Spring Framework on theGeronimo application server.This example is designed purely for demonstrating thecapabilities of the framework.It should, under no circumstances, be used for production use.

  

Web 应用程序部署描述符:web.xml

您的应用程序是一个 Web 应用程序,因此它需要部署描述符,而 web.xml 提供了该定义。在 web.xml 文件中,开始定义 Servlet 来处理对您应用程序的请求。您可以看到为电话本应用程序指定的 Servlet 是来自 Spring MVC 模块的 DispatcherServlet。

由于各种原因,我选择了 DispatcherServlet 来启动 Spring 应用程序。引入 DispatcherServlet 可使应用程序更灵活。您可以配置此 Servlet 来为页面解析视图、语言环境和主题。另一个原因是 Spring MVC 是 Spring 框架入门学习的最简单的方法,并且它还可以轻松地部署到 Geronimo 上。

DispatcherServlet 只是冰山一角,是 Spring MVC 框架所提供的众多功能之一。在本系列教程的第 5 部分中,您将了解到关于 Spring 的 MVC 框架的更多信息。该部分介绍了 Spring MVC 附带的各种控 制器和处理程序。

DispatcherServlet 要求在 -servlet.xml 文件 (本例中为 phonebook- servlet.xml) 中定义控制器和其他配置。您很快就会看到此文件。您还要为电话本 Servlet 定义 URL 映射。*.do 模式的所有 URL 请求都将被分发到电话本 Servlet 中。清单 4 显示了 web.xml 代码。 web.xml 位于 /web/WEB-INF/ 目录中。

清单 4. 电话本应用程序的 web.xml 部署描述符

  Phone Book     phonebook  org.springframework.web.servlet.DispatcherServlet   1       phonebook   *.do              30      

现在,您已经定义完应用程序的视图和将应用程序部署到 Geronimo 中所需的部署描述符。下一节将 向您说明如何为应用程序定义 Spring Web 应用程序上下文。

Web 应用程序上下文简介

本节介绍了用于应用程序的应用程序上下文。在 第 1 部分 的应用程序上下文概览中,您了解了应用 程序上下文可提供的功能。功能之一是 URL 映射,而且您也要在此使用该功能。

应用程序上下文定义文件:phonebook-servlet.xml

phonebook-servlet.xml 文件用于为已在 web.xml 文件中定义的 DispatcherServlet 指定应用程序 上下文。该文件的文件名是根据 web.xml 中的 servlet 名称再附加 -servlet 而得来的。这是 Spring 框架所遵循的命名约定。您还要在此文件中将应用程序要使用的控制器定义为 PhonebookController。

在此文件中,您将完成两件事:

为电话本指定将用作控制器的 Bean。

添加 URL 映射使 DispatcherServlet 知道应当为不同的 URL 调用哪些控制器 (本例中为 /home.do )。

清单 5 显示了 phonebook-servlet.xml 文件,可在 /web/WEB-INF/ 目录中 找到。

清单 5. phonebook-servlet.xml 文件

    class="phonebook.controller.PhonebookController"/>      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">                        PhonebookController                  

电话本 Controller Bean

您的应用程序的最后一部分是 Controller Bean,在这里名为 PhonebookController.java,位于 /src/phonebook/controller/PhonebookController 目录中。此控制器将处理请 求并将 ModelAndView 对象返回给 Spring 容器。本例中的视图是您在前一节中定义的 home.jsp。这是 您可以获取的原始控制器!代码如 清单 6 所示。

清单 6. PhonebookController.java 文件

package phonebook.controller;import java.io.File;import java.io.IOException;import java.io.RandomAccessFile;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;/*  * PhonebookController.java  *  * This class is a simple Spring controller. This controller isregistered as a  * Bean in the PhoneBook ApplicationContext.  *  * @author Arun Chhatpar  * @version 1.0  */public class PhonebookControllerimplements  Controller{   /** Creates a new instance of PhonebookController */   public PhonebookController() {   }   public ModelAndView handleRequest(HttpServletRequest request,  HttpServletResponse response)   throws ServletException, IOException    {     return new ModelAndView("/WEB-INF/jsp/home.jsp");   }}

好啦!您已经完成了应用程序的编码工作。

构建应用程序

您将使用 Ant build 脚本来构建应用程序,因此,请确保满足运行 Ant 的下列所有要求:

将 ANT_HOME 设为系统变量。

正确设定 JAVA_HOME。

/bin 已在路径中。

/bin 已在路径中。

接下来,打开一个命令行窗口 (对于 Linux 用户,则是 bash shell),转至 /workspace/phonebook 目录,然后键入以下命令:ant dist。如果运行正常,您 的窗口应当显示 清单 7 中的内容。

清单 7. 使用 Ant 脚本创建 .war 文件

K:/geronimo-1.0/workspace/phonebook>ant distBuildfile: build.xmlbuild:   [mkdir] Created dir: K:/geronimo-1.0/workspace/phonebook/.classes   [javac] Compiling 1 source file to  K:/geronimo-1.0/workspace/phonebook/.classesdist:   [mkdir] Created dir: K:/geronimo-1.0/workspace/phonebook/dist    [war] Building war:  K:/geronimo-1.0/workspace/phonebook/dist/phonebook.warBUILD SUCCESSFULTotal time: 2 secondsK:/geronimo-1.0/workspace/phonebook>

Ant build 将在 /dist 目录中创建一个 phonebook.war 文件。

您的应用程序现在就可以部署到 Geronimo 上了。

把应用程序部署到 Geronimo 上

在本节中,您将把示例应用程序部署到 Geronimo 上。

使用 Web 管理控制台

部署应用程序的最简单方法就是通过 Web 管理控制台来执行部署任务。您可以使用该控制台提供的 Deploy New 选项。单击 Deploy New 后,Web 控制台应当显示如 图 4 所示的界面。

图 4. Deploy New 应用程序控制台

在此控制台中,您只需在 Archive 字段中浏览并选择应用程序的 .war 文件,然后单击 Install 按 钮。此时,请不要在 Plan 字段中放入任何内容。如果运行正常,您应当会看到一条消息,告诉您 Application deployed successfully。

测试已部署的应用程序

部署后,您可以通过 URL http://localhost:8080/phonebook/home.do 来测试应用程序。如果您看到 如 图 5 所示的页面,那么,恭喜您!您已经成功地完成了骨架应用程序的开发、配置和部署工作。

图 5. 在 Geronimo 上运行的电话本应用程序

接下来会发生什么?

现在,图 1 中所示的设计图表就有用了。

对 home.do 页面的请求转到了 Geronimo。运行在 Geronimo 容器内部的 Tomcat Web 容器将为应用 服务器处理请求。然后,Tomcat 将读取配置文件,尤其是 web.xml,并发现已将 DispatcherServlet 配 置为处理此请求。请求将被转发给 DispatcherServlet。

DispatcherServlet 是 Spring MVC 框架的一部分,因此 Spring 容器将从此处接管,并将尝试算出 如何处理此请求或者由哪个控制器来处理此请求。它将使用依赖性注入来计算这个问题。phonebook- servlet.xml 中定义的应用程序上下文是用于帮助 Spring 容器将 /home.do 请求与 PhonebookController 关联起来的文件。该请求将被转发给 PhonebookController 类,然后该类将返回 home.jsp 页面。该应答将被转发给 Tomcat 容器,该容器将编译 JSP 并将应答返回给浏览器。

好啦 —— 这就是您的应用程序在 Geronimo 上使用 Spring 框架运行的过程。您深入学习本系列教 程的后续内容后,将可了解关于此工作流程的更多信息。

Spring 的优点

本教程中介绍的示例应用程序是部署到 Geronimo 上并可以使用其他框架 (例如 Struts) 的,但我 认为如果使用 Spring 在以下几方面会更有优势:

Spring 不会强制您使用特定的技术 —— 例如,JSP。您可以轻松地将 Servlet 甚至普通旧式 Java 对象 (POJO) 用于应用程序中,而且 Spring 不会有任何不兼容的情况,并一如既往地服务于此应用程序 。

Spring 对各种组件的划分十分清晰。您可能在开发应用程序时就注意到了 Spring 是怎样清晰地划分 了控制器 (DispatcherServlet)、JavaBean 模型 (PhonebookController 类) 和视图 (您定义的两个 JSP)。Spring 容器在运行时使用配置文件将所有组件整合在一起。

Spring 提供了一个瘦 Web 层。使用 Spring,可以将业务逻辑与视图完全分隔开,不仅如此,视图不 需要知道或考虑如何管理业务对象。Spring 容器可以关注业务逻辑与视图的关系,还可以管理对象的生 命周期。

Spring 提供了简单的单元测试。当应用程序各组件之间的依赖性较弱时,单独测试这些应用程序组件 就会变得更简单。

敬请期待下一部分

下一个教程第 3 部分将继续介绍将该应用程序构建到的位置。您将使用 Spring DAO 和 ORM 框架展 开应用程序以显示从 Apache Derby 数据库中动态获取的电话本内容。

结束语

在本教程中,您了解了如何开发、配置和部署第一个基于 Spring 框架的应用程序,并把它部署到了 Geronimo 应用服务器上。您看到了安装 Geronimo 是多么简单以及 Geronimo 中的 Web 控制台怎样简化 了 Web 应用程序的部署和管理工作。

您还简单地体验了在本系列教程中将要开发的应用程序。这样做的目的是保持示例应用程序简单性, 使您可以在继续学习下一个教程时仍把注意力放在 Geronimo 和 Spring 框架上。

随文源码:http://www.bianceng.net/other/201212/687.htm

离开之后,我想你不要忘记一件事:不要忘记想念我。

ApacheGeronimo和Spring框架,第2部分:构建第一个应用程序

相关文章:

你感兴趣的文章:

标签云: