Skip to content

21. 结论

让我们回顾一下本文中介绍的内容:

  • 使用Servlet和JSP页面进行Java Web编程的基础知识
  • 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 以外的应用程序中,它也同样有用。

因此,我们通过一个管理人员列表的基本示例,在三层架构[Web、业务逻辑、DAO]中实现了MVC架构,以此作为本课程的结尾。

在应用程序的第1个版本中,人员列表保存在内存中,当Web应用程序卸载时,该列表便会消失。在后续版本中,人员列表存储在数据库表中。我们使用了四种不同的数据库管理系统:Firebird、Postgres、MySQL和SQL Server Express。

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

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

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

欢迎读者深入探索该产品提供的所有功能。