MVC 模式早已被大家熟知,多多少少大家都接触过一些MVC的框架比如stuts,webwork,springmvc,当我们谈论到MVC时其实就是了解他的这种分层理念,职责清晰化,抛弃了原来的混合开发模式,把程序的交互分为了Model 数据处理层,View 视图处理层,Contro 逻辑控制层, 职责清晰明了,更利于程序的扩展和维护。
当然我们只简简单单的知道这些东西还不够,我们还需要深入这些设计模式的实现里面去探索,今天我们要学习的是MVC理念应用框架中应用最广的一个SpringMVC。我们先通过程序源代码去分析了解它是怎么工作的,然后总结自己动手实现一个MVC框架。
我们要深入学习这个框架,那么阅读框架的源代码就是必要的了,当然阅读源代码的过程是一个比较痛并快乐的过程,痛苦的是代码绕来绕去容易晕,快乐的是一旦看懂了里面的逻辑和设计就会获益良多。
当然为了让大家花更少的时间成本来看懂源代码,这里为大家理清了整个源代码的架构逻辑,大家根据这个逻辑看源码的就非常容易懂了,我把SpringMVC的整个实现过程主要分成了三个过程,搭建过程、初始化过程、请求处理过程,下面我们来看下这几个过程分别做了些什么事。
配置搭建过程
配置过程里面主要是针对Http容器(tomcat)的配置,这个里面主要是明确可以处理哪些请求,由谁处理。
1、Web.xml配置统一请求的入口,由哪个类统一接受请求。
2、配置请求入口可以接受哪些请求。
3、初始化配置,加载spring的基本配置信息。
![addbc4d07a6beba4bd7055e98d28ab87.png](https://i-blog.csdnimg.cn/blog_migrate/d81c905d66d7b5a9c119501dedac9496.png)
初始化信息过程。
初始化信息的过程比较多,这里为了快速理解,我们只把最关键且必要的流程列出来。
1、初始化保存请求URL和Controller的关系并封装到HandleMaping里面。
2、初始化参数信息,保留方法名、方法参数,方法参数所在位置的关系。
3、初始化视图解析器的规则,在哪个文件夹下找对应的视图文件,前缀和后缀规则是怎样的。
![79d4b9fbf5437f20d3eaf721637c1e48.png](https://i-blog.csdnimg.cn/blog_migrate/66bdfd5c488f63dc9ef93e122e054693.jpeg)
请求处理过程。
请求处理过程是整个SpringMVC最核心的地方,这里统一接受用户的请求进行处理并响应用户结果。
1、接受用户对应类型的请求
2、对请求头参数进行处理。
3、获得用户请求的URL,并根据URL找到对应的Controller. 和method
4、把用户请求的参数封装传递给对应Controller的method。
5、Controller执行对应的method逻辑。
6、根据method响应信息,决定用什么视图方式响应给用户。
![464496a4d2d016e2d8de5a8b65222556.png](https://i-blog.csdnimg.cn/blog_migrate/834ba08c9be5113697d3f4a589031f17.jpeg)