摘要
Spring MVC 是一个开源的、基于MVC架构的WEB应用框架。这里记录MVC模型的概念以及Spring MVC 的请求处理流程。
关键词:Spring MVC
一、什么是Spring MVC
Spring MVC 是一个开源的、基于MVC架构的WEB应用框架。
Spring MVC 是基于MVC框架的,MVC为:
- 模型(Model)封装了应用程序数据,通常它们由POJO类组成;
- 视图(View)负责渲染模型数据,生成浏览器可以理解的HTML输出;
- 控制器(Controller)负责处理用户请求,构建模型,并将其传递给视图进行渲染;
MVC关系图如下:
(图1:MVC模型)
二、Spring MVC 核心组件及处理流程
1、Spring MVC 处理流程
首先给出Spring MVC 的组件及其处理流程图:
(图2:Spring MVC 处理流程图)
处理流程大致分为三步:
- 分发:请求最开始进入Spring MVC时,DispatcherServlet会根据请求路径查找到对应的Handler对象;
- 处理:HandlerAdapter会对请求做处理,执行一系列的拦截器和Handler业务代码,最后返回ModelAndView对象;
- 渲染:根据Handler返回的对象,找到ViewResolver,ViewResolver结合Model和View对象渲染成页面返回;
2、Spring MVC 核心组件
对照前面的流程图,这里列出Spring MVC 几个核心组件:
组件 | 描述 |
---|---|
DispatcherServlet | 前置控制器,配置在web.xml文件中,拦截匹配的请求。从容器中取出所有的HandlerMapping进行遍历,找到对应的Handler。 |
HandlerMapping | 根据请求去找对应的Handler,并将Handler及一系列HandlerInterceptor封装到HandlerExecutionChain中。 |
HandlerAdapter | 根据Handler来找到支持它的HanderAdapter,通过HandlerAdapter来执行Handler可以得到ModelAndView对象。 |
HandlerIntercepter | 视图接口的处理器拦截器,类似于Servlet中的Filter,用于对请求进行拦截和处理。 |
Controller | 处理请求,执行业务。 |
ModelAndView | 表示你想展示的页面信息。 |
ViewResolver | 用于将一个逻辑上的视图名解析为一个真正的视图对象。 |
View | View接口用于处理视图,返回给客户端。 |