一、SpringMVC 概述
1、Spring 为展现层提供的基于 MVC 设计理念(设计思想)的优秀的 Web 框架,是目前最主流的 MVC 框架之一;
2、Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架;
3、Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口。
4、支持 REST 风格的 URL 请求;(Restful)
5、采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性;
二、SpringMVC 是什么
1、一种轻量级、基于 MVC 的 Web 应用框架,偏前端而不是基于业务逻辑层。Spring 框架的一个后续产品;
2、Spring 框架结构图
![](https://img2020.cnblogs.com/blog/1691302/202111/1691302-20211104193056467-688829585.png)
Spring 框架结构图(老版本)
三、SpringMVC 可以做什么
1、天生与 Spring 框架继承,如:(IOC、AOP)
2、支持 Restful 风格;
3、进行更简洁的 Web 层开发;
4、支持灵活的 URL 到页面控制器的映射;
5、非常容易与其他视图技术集成,如:Velocity、FreeMarker 等等
6、因为模型数据不存放在特定的 API 里,而是放在一个 Model里(Map 数据结构的实现,因此很容易被其他框架使用)
7、非常灵活的数据验证、格式化和数据绑定机制、能使用任何对象进行数据绑定,不必实现特定框架的 API;
8、更加简单、强大的异常处理;
9、对静态资源的支持;
10、支持灵活的本地化、主题等解析;
四、SpringMVC 怎么用
1、将 Web 层进行了职责解耦,基于请求-响应模型;
2、常用主要组件:
(1)DispatchServlet:前端控制器,核心控制器:对请求统一管理,处理;
(2)Controller:处理器/页面控制器,做的是 MVC 中 C 的事情,但控制逻辑转移到前端控制器了,用于对请求进行处理;
(3)HandlerMapping:请求映射到处理器,找谁来处理,如果映射成功返回一个 HandlerExecutionChain 对象(包含一个 Handler 处理器(页面控制器)对象、多个 HandlerInterceptor 拦截器对象);
(4)View Resolver:视图解析器,找谁来处理返回的页面。把逻辑视图解析为具体的 View,进行这种策略模式,很容器更换其他视图技术;
如 InternalResourceViewResolver 将逻辑视图名映射为 JSP 视图;
(5)LocalResolver:本地化、国际化;
(6)MultipartResolver:文件上传解析器;
(7)HandlerExceptionResolver:异常处理器;
五、SpringMVC 的MVC 实现思想