注意:本章只是mvc,跟springboot没有关系
再说MVC之前,先说一下web的基础架构:servlet,servlet属于非常底层的api,在开发过程中大多数使用http的形式去实现。
servlet特点:请求/响应式(Request/Response)、屏蔽网络通讯的细节(使我们不需要关注通讯相关的东西,只关心请求参数请求头等我们需要的)、具有完整的生命周期
servlet职责:处理请求、资源管理(主要是在servlet装配的时候加载缓存等)、视图渲染。
但由于servlet功能太多,职责不单一,对于底层方便但对于应用并不方便,于是产生了前端控制器(http://www.corej2eepatterns.com/FrontController.htm)
关于spring mvc就是构建在servlet引擎上实现的
对于SpringFramework时代的mvc的认识
- 实现Controller(打标记即可)
- 配置Spring MVC组件(配置扫包路径、配置映射、配置视图渲染等,使spring mvc可以完整地运行)
- 部署DispatcherServlet(比如在web.xml中部署)
- MVC 核心组件
处理器管理(handler)
映射:handlerMapping
Request映射请求到处理器Handler,及其关联的拦截器HandlerInterceptor列表,映射关系是给予不同的HandlerMapping实现的一些标准细节,一种是RequestMappingHandlerMapping支持的@RequestMapping,还有一种是SimpleUrlHandlerMapping维护精确的URI路径与处理器的映射关系。
在mvc的配置文件中会有一个RequestMappingHandlerMapping的配置,打开后向上追溯,可发现实现HandlerMapping接口,这个接口简单来讲用于handler的映射。
适配器:HandlerAdapter
帮助DispatcherServlet调用请求处理器Handler,无需关联实际调用的细节。
看源码也可以看出,RequestMappingHandlerAdapter也会继承HandlerAdapter。
执行:HandlerExecutionChain
页面渲染
视图解析:ViewResolver
从处理器Handler返回字符类型的逻辑视图名称解析出实际的view对象,该对象将渲染后的内容输出到http响应中。
配置文件可以看出InternalResourceViewResolver,追溯源码,该类继承ViewResolver接口。
另外红框的类,追溯可以看出实现View接口,View接口注释:
* MVC View for a web interaction. Implementations are responsible for rendering
* content, and exposing the model. A single view exposes multiple model attributes.
*
* <p>This class and the MVC approach associated with it is discussed in Chapter 12 of
* <a href="http://www.amazon.com/exec/obidos/tg/detail/-/0764543857/"&