MVC是英文Modle View Controller的简称,是一种软件设计典范,目的是将业务逻辑、数据、页面视图代码分离,达到增加开发效率、降低耦合度、代码更利于维护的目的。
![f7587159d07694fab584d10470ff143b.png](https://i-blog.csdnimg.cn/blog_migrate/e3cda400ae13cf72a93962d0176b7767.jpeg)
Spring MVC是一个流行的MVC框架,我们知道Spring核心是解决业务逻辑层和其他各层的松耦合问题,Spring MVC由Spring基础框架支撑,让开发Java Web 程序变得更简单。
![3390740f683a1b7364a07fb0532e739a.png](https://i-blog.csdnimg.cn/blog_migrate/088a5153370f5806886e672c251eb442.jpeg)
Spring MVC 框架原理:
1.用户HTTP请求 ——> DispatcherServlet(调度器根据请求进行调度)
2.DispatcherServlet ——> HandlerMapping(找到对应的处理器)
3.HandlerMapping ——> Controller(调用对应的处理器)
4.Controller ——>业务层(调用业务层完成相应的业务)
5.业务层 ——> ModelAndView(处理结果数据)
6.ModelAndView ——>DispatcherServlet ——>ViewResolver(视图解析器做处理)
7.ViewResolver ——> View(模型数据显示) ——>用户
Spring MVC 实现源码解析
ContextLoaderListener类:
简述:ContextLoaderListener类是一个监听类,在tomcat启动后创建一个IOC容器,并将创建的IOC容器存到servletContext中。
web.xml中的配置:
contextConfigLocation/WEB-INF/applicationContext.xmlorg.springframework.web.context.ContextLoaderListener
springMVC父容器初始化流程图:
![ccab20d8b4d9864f97911db3b344e621.png](https://i-blog.csdnimg.cn/blog_migrate/6385f5b71efa0157a3d3e151fd2b0a0c.jpeg)
DispatcherServlet类:
简述:DispatcherServlet是SpringMVC的入口,DispatcherServlet类主要用作职责调度工作,本身主要用于控制流程。
代码实现的业务逻辑:
DispatcherServlet类本身也是一个Servlet,以下是该类的关系图:
![99dda13791bab92be94a2d9e2c169900.png](https://i-blog.csdnimg.cn/blog_migrate/f393cb3b13cbbf46f0b72b7c45ca4727.jpeg)
DispatcherServlet调度器架构原理:
![441d44cf8d4519ec84e807b5f8692807.png](https://i-blog.csdnimg.cn/blog_migrate/262569397dd68e07a48cb3ca230fa256.jpeg)
HandlerMapping接口:
简述:根据调度器的请求找到一个处理器handler,其实现机制简单来说就是维持了一个url到Controller关系的Map结构。
实现机制:
HandlerMapping的实现机制就是根据request来获得HandlerExecutionChain,其实就是获取真正要执行的Controller或者某个具体的方法。HandlerMapping接口提供唯一的方法getHandler(HttpServletRequest request)。
ViewResolver接口:
简述:ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视图。
InternalResourceViewResolver类是ViewResolver的实现类,在xml中配置如下:
View接口:
简述:View接口的职责就是接收model对象、Request对象、Response对象,并渲染输出结果给Response对象。