java mvc 源码分析_Spring MVC 源码解析

写在前面

在分析 Spring AOP 源码之前,如果你对 Spring IOC、依赖注入(DI) 原理不是很清楚,建议您先了解一下:Spring IOC 源码解析、Spring 依赖注入(DI) 源码解析,这样或许会让你的思路更加清晰。

1.什么是 MVC

MVC 作为一种设计模式,并不是仅限于 Java Web 应用,还包括许多应用,比如前端、PHP、.NET 等语言。之所以那么做的根本原因在于解耦各个模块。

MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责。

模型(Model):用于存储数据以及处理用户请求的业务逻辑。

视图(View):向控制器提交数据,显示模型中的数据。

控制器(Controller):根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的有关结果交给哪个视图更新显示。

2.Spring MVC

基于 Servlet 的 MVC 模式的具体实现如下:

模型:一个或多个 JavaBean 对象,用于存储数据(实体模型,由 JavaBean 类创建)和处理业务逻辑(业务模型,由一般的 Java 类创建)。

视图:一个或多个 JSP 页面,向控制器提交数据和为模型提供数据显示,JSP 页面主要使用 HTML 标记和 JavaBean 标记来显示数据。视图层 Spring MVC 框架是可配置的,并不关心使用的视图技术,你还可以选择 Velocity、Freemarker 等。

控制器:一个或多个 Servlet 对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的 JavaBean,并将处理结果存放到实体模型 JavaBean 中,输出给视图显示。

3.Spring MVC 工作流程

cbeb36be7c50

Spring MVC工作流程图.png

各个组件作用如下:

前端控制器(DispatcherServlet):接受用户请求,分发请求,响应结果;

处理器映射器(HandlerMapping):根据请求 URL 查找处理器;

处理器适配器(HandlerAdapter):适配映射器返回的处理器;

处理器(Handler):用于处理业务请求,项目中叫做 Controller;

视图解析器(ViewResolver):根据视图名称,进行查找,并生成视图对象(此处可自行配置);

视图(View):用于视图的渲染操作,是一个接口。

4.Spring MVC的初始化

Spring MVC的初始化主要有两部分组成`

1.初始化Spring IOC

通过配置ContextLoderListener完成

2.初始化映射请求上下文

通过配置 DispatcherServlet 完成

注意:如果没有配置 Spring IOC 的初始化类 ContextLoderListener,那么 DispatcherServlet 在它初始化的时候会对 Spring IOC 进行初始化,一般来说最好在DispatcherServlet 初始化之前就完成 Spring IOC 初始化。(附:web.xml配置信息)

contextConfigLocation

classpath:spring.xml

org.springframework.web.context.ContextLoaderListener

mvcDemo

org.springframework.web.servlet.DispatcherServlet

1

mvcDemo

/

5.Spring MVC 源码分析从何入手

相信大家对 Spring MVC 的使用应该有所了解。我们在使用 Spring MVC 时,都会在 web.xml中添加如下配置信息,所以我们就是从 DispatcherServlet 这个类开始分析。

cbeb36be7c50

DispatcherServlet结构图.png

从图中我们看到 DispatcherServlet 继承自 HttpServlet 类,它也是一个 Servlet 容器。在 Spring 容器启动的时候,Spring MVC就会执行初始化操作。HttpServlet 有两大核心方法:init() 和 service() 方法,init() 方法位于 HttpServletBean 父类下,所以:①我们从 init() 方法解析   ②解析完成后,执行 doService() 方法开始完成 MVC 流程`

6.Spring MVC 源码分析时序图

cbeb36be7c50

Spring MVC源码解析时序图.jpg

7.源码分析

此处不再一步步介绍源码,你可以按照 6.Spring MVC 源码分析时序图 ,打开源码来进一步分析,此处粘贴过多代码无多大意义。附 spring-framework-5.0.2.RELEASE (中文注释)版本,直接解压 IDEA 打开即可。

恭喜您,枯燥源码看到这里。 Spring MVC 源码介绍到此为止

博主写作不易,来个关注呗

求关注、求点赞,加个关注不迷路 ヾ(◍°∇°◍)ノ゙

博主不能保证写的所有知识点都正确,但是能保证纯手敲,错误也请指出,望轻喷 Thanks♪(・ω・)ノ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值