第 7 章 Spring MVC 的高级技术

本章内容:

  • Spring MVC 配置的替代方案

  • 处理文件上传

  • 在控制器中处理异常

  • 使用flash属性

稍等,还没有结束!

如果你在电视购物节目上看过一些小发明或产品广告的话,你可能听过类似这样的话。在广告描述完产品并宣称它能够做什么之后,我们可能会听到“稍等,还没有结束!”,然后广告会继续告诉我们产品还有什么令人激动的特性。

在很多方面,Spring MVC(其实,整个 Spring 也是如此)也有“还没有 结束!”这样的感觉。就在我们觉得已经掌握了 Spring MVC 能够做什么之后,我们会发现它所能做的还不止如此。

在第 5 章中,我们学习了 Spring MVC 的基础知识,以及如何编写控制器来处理各种请求。基于这些知识,我们在第 6 章学习了如何创建 JSP 和 Thymeleaf 视图,这些视图会将模型数据展现给用户。你可能认为我们已经掌握了 Spring MVC 的全部知识。但是稍等!还没有结束!

在本章中,我们会继续 Spring MVC 的话题,本章所介绍的特性已经超出了第 5 章和第 6 章基础知识的范畴。我们将会看到如何编写控制器来处理文件上传、如何处理控制器所抛出的异常,以及如何在模型中传递数据,使其能够在重定向(redirect)之后依然存活。

但首先,我要兑现一个承诺。在第 5 章中,我快速展现了如何通过 Abstract-AnnotationConfigDispatcherServletInitializer 搭建 Spring MVC,当时我承诺会为读者展现其他的配置方案。所以,在介绍文件上传和异常处理之前,我们先花一点时间探讨一下如何用其他的方式来搭建 DispatcherServlet 和 Context-LoaderListener。