Skip to content

21. 结论

回顾本文所述内容:

  • 基于Servlet和网页的Java Web编程基础 JSP
  • 三层架构简介 MVC
  • 三层架构简介
  • Spring 简介 IoC
  • 用于说明这些要点的示例

我们认为,读到这里的读者已经准备好亲自开发自己的Java Web应用程序了。同时,读者也已具备掌握其他与本文所学方法相近的开发方法的能力。让我们回顾一下本文所开发的Web应用程序架构:

对于简单的应用程序,这种架构已经足够。当我们编写了多款此类应用程序后,会发现两个不同应用程序的Servlet:

  1. 采用相同的机制来确定应执行哪个方法 [doAction] 来处理用户请求的操作
  2. 实际上仅在这些方法 [doAction] 的内容上有所不同

此时,人们往往会产生强烈的冲动:

  • 将处理逻辑 (1) 提取到一个通用 Servlet 中,该 Servlet 不了解调用它的应用程序
  • 将处理逻辑 (2) 委托给外部类,因为通用 Servlet 无法识别其被使用的具体应用程序
  • 通过配置文件将用户请求的操作与负责处理该操作的类建立关联

一些通常被称为“框架”的工具应运而生,旨在为开发人员提供上述便利。其中历史最悠久且可能最广为人知的便是 Struts(http://struts.apache.org/)。 Jakarta StrutsApache 软件基金会(www.apache.org)的一个项目。该框架的介绍详见 (http://tahe.developpez.com/java/struts/)。

较新出现的 Spring 框架(http://www.springframework.org/)提供了与 Struts 类似的功能。 实际上,这是其 Spring MVC 模块多篇文章对此进行了说明(http://tahe.developpez.com/java/springmvc-part1/)。

Spring 不仅限于三层应用中 [web] 层的 MVC 概念,即使在非 Web 应用中也同样有用。

因此,我们通过在三层架构中实现 MVC 架构,并结合一个基础的人员列表管理示例,完成了本课程的学习。

在应用程序的第 1 版中,人员列表保存在内存中,并在 Web 应用程序关闭时消失。在其他版本中,人员列表保存在数据库表中。 我们使用了四种不同的 SGBD:Firebird、Postgres、MySQL 和 SQL Server Express。

得益于Spring IoC,版本1中的[web]层得以在后续版本中完整保留。由此我们证明,可以构建具有独立层的ntier架构

在采用数据库的版本中,我们展示了Spring在构建[dao]和[service]层方面的作用。得益于Spring与iBATIS的集成,我们成功构建了四个版本,它们仅在配置文件上有所不同。 在四个版本中,均使用相同的 [DaoImplCommon] 类来实现 [dao] 层。为解决 Firebird 版本 SGBD 特有的问题,我们对该类进行了派生,但未对其进行修改。

最后,我们演示了如何利用 Spring 在 [service] 层以声明式方式管理事务。

建议读者深入探索该产品提供的全部功能。