21. 结论
回顾本文所述内容:
- 基于Servlet和网页的Java Web编程基础 JSP
- 三层架构简介 MVC
- 三层架构简介
- Spring 简介 IoC
- 用于说明这些要点的示例
我们认为,读到这里的读者已经准备好亲自开发自己的Java Web应用程序了。同时,读者也已具备掌握其他与本文所学方法相近的开发方法的能力。让我们回顾一下本文所开发的Web应用程序架构:
![]() |
对于简单的应用程序,这种架构已经足够。当我们编写了多款此类应用程序后,会发现两个不同应用程序的Servlet:
- 采用相同的机制来确定应执行哪个方法 [doAction] 来处理用户请求的操作
- 实际上仅在这些方法 [doAction] 的内容上有所不同
此时,人们往往会产生强烈的冲动:
- 将处理逻辑 (1) 提取到一个通用 Servlet 中,该 Servlet 不了解调用它的应用程序
- 将处理逻辑 (2) 委托给外部类,因为通用 Servlet 无法识别其被使用的具体应用程序
- 通过配置文件将用户请求的操作与负责处理该操作的类建立关联
一些通常被称为“框架”的工具应运而生,旨在为开发人员提供上述便利。其中历史最悠久且可能最广为人知的便是 Struts(http://struts.apache.org/)。 Jakarta Struts 是 Apache 软件基金会(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] 层以声明式方式管理事务。
建议读者深入探索该产品提供的全部功能。

