一、 什么叫 MVC
模型-视图-控制器(MVC) 是一个众所周知的以设计界面应用程序为基础的设计思想。 它主要通过分离模型、 视图及控制器在应用程序中的角色将业务逻辑从界面中解耦。 通常, 模型负责封装应用程序数据在视图层展示。 视图仅仅只是展示这些数据, 不包含任何业务逻辑。 控制器负责接收来自用户的请求,并调用后台服务(service 或者 dao) 来处理业务逻辑。 处理后, 后台业务层可能会返回了一些数据在视图层展示。 控制器收集这些数据及准备模型在视图层展示。 MVC 模式的核心思想是将业务逻辑从界面中分离出来, 允许它们单独改变而不会相互影响。
二、 Spring MVC 的面容
Spring MVC 是 Spring 家族中的一个 web 成员, 它是一种基于 Java 的实现了 Web MVC 设计思想的请求驱动类型的轻量级 Web 框架, 即使用了 MVC 架构模式的思想, 将 web 层进行职责解耦, 基于请求驱动指的就是使用请求-响应模型, 框架的目的就是帮助我们简化开发, Spring MVC 也是要简化我们日常Web 开发的。Spring MVC 是服务到工作者思想的实现。 前端控制器是DispatcherServlet; 应用控制器拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理; 支持本地化/国际(Locale) 解析及文件上传等; 提供了非常灵活的数据验证、 格式化和数据绑定机制; 提供了强大的约定大于配置(惯例优先原则) 的契约式编程支持。
Spring MVC的用处:
1.让我们能非常简单的设计出干净的 Web 层;
2. 进行更简洁的 Web 层的开发;
3.天生与 Spring 框架集成(如 IoC 容器、 AOP 等);
4.提供强大的约定大于配置的契约式编程支持;
5.能简单的进行 Web 层的单元测试;
6.支持灵活的 URL 到页面控制器的映射;
7.非常容易与其他视图技术集成, 如 Velocity、 FreeMarker 等等, 因为模型
8.数据不放在特定的 API 里, 而是放在一个 Model 里(Map 数据结构实现, 因此很容易被其他框架使用);
9.非常灵活的数据验证、 格式化和数据绑定机制, 能使用任何对象进行数据绑定, 不必实现特定框架的 API;
10.支持灵活的本地化等解析;
11.更加简单的异常处理;
12.对静态资源的支持;
13. 支持 Restful 风格。
Spring MVC 框架也是一个基于请求驱动的 Web 框架, 并且使用了前端控制器模式(是用来提供一个集中的请求处理机制, 所有的请求都将由一个单一的处理程序处理来进行设计, 再根据请求映射规则分发给相应的页面控制器(动作/处理器) 进行处理。
Spring MVC 核心架构图: