21. 结论
让我们回顾一下本文中介绍的内容:
- 使用Servlet和JSP页面进行Java Web编程的基础知识
- 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 以外的应用程序中,它也同样有用。
因此,我们通过一个管理人员列表的基本示例,在三层架构[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] 层以声明式方式管理事务。
欢迎读者深入探索该产品提供的所有功能。

