一、Spring MVC
Spring MVC 基于模型-视图-控制器(Model-View-Controller, MVC)模式实现,并且很好的实现了软件设计中的开闭原则(即对扩展开放,对修改关闭),当因为业务需要对Spring MVC做些定制化处理时,就会发现Spring MVC对功能扩展是极其友好的、在后续的源码解析系列文章中我们会陆续看到Spring MVC在处理请求的各个步骤中都可以定制所需要的功能。
二、Spring MVC 整体框架
整个系列的文章都会围绕这张图进行,会对每一个步骤进行详细讲解。
首先我们先来看一下 DispatcherServlet diagram
可以看到蓝色的继承关系到 Servlet 相信大家在学习MVC
框架之前对 HttpServlet
非常的熟悉,目前还有一些老项目在使用原生的 java servlet
进行项目开发。我们看一下 servlet
接口最重要的方法签名:
1 | 复制代码 /** |
这个方法是servlet
处理web
请求的入口。Spring MVC
在DispatchSerlvet
还分装了一层FrameWorkServlet
用于统一处理所有不同方法类型(GET
、POST
等)的请求
三、各组件的基本介绍。
我们从一个Http
请求的角度,来大致了解Spring MVC是处理请求的大致流程(例如,到controller
方法加@ResponseBody
时就不会有视图解析这一步)。
1、web container 接收到一个请求,容器调用已经注册好的DispatcherServlet
,后者通过Request
对象到RequestMapping
获取对应的 handler
(即controller
层实际调用的方法)。
2、执行interceptor
的preHandler()
方法。
3、执行第一步获取的Controller
方法,并返回ModelAndView
。
4、执行interceptor
的postHandler()
方法。
5、视图渲染,执行ViewResolve.resolveViewName()方法回去视图文件。
1 | 复制代码/** |
总结
本文主要介绍了Spring MVC的一些概念以及请求执行的大致过程。后续的文章将继续分析Spring MVC的各个组件,以及如何根据自己的项目定制相应的功能。
本文转载自: 掘金