MVC 模式早已被大家熟知,多多少少大家都接触过一些MVC的框架比如stuts,webwork,springmvc,当我们谈论到MVC时其实就是了解他的这种分层理念,职责清晰化,抛弃了原来的混合开发模式,把程序的交互分为了Model 数据处理层,View 视图处理层,Contro 逻辑控制层, 职责清晰明了,更利于程序的扩展和维护。

当然我们只简简单单的知道这些东西还不够,我们还需要深入这些设计模式的实现里面去探索,今天我们要学习的是MVC理念应用框架中应用最广的一个SpringMVC。我们先通过程序源代码去分析了解它是怎么工作的,然后总结自己动手实现一个MVC框架。

我们要深入学习这个框架,那么阅读框架的源代码就是必要的了,当然阅读源代码的过程是一个比较痛并快乐的过程,痛苦的是代码绕来绕去容易晕,快乐的是一旦看懂了里面的逻辑和设计就会获益良多。

当然为了让大家花更少的时间成本来看懂源代码,这里为大家理清了整个源代码的架构逻辑,大家根据这个逻辑看源码的就非常容易懂了,我把SpringMVC的整个实现过程主要分成了三个过程,搭建过程、初始化过程、请求处理过程,下面我们来看下这几个过程分别做了些什么事。

配置搭建过程

配置过程里面主要是针对Http容器(tomcat)的配置,这个里面主要是明确可以处理哪些请求,由谁处理。

1、Web.xml配置统一请求的入口,由哪个类统一接受请求。

2、配置请求入口可以接受哪些请求。

3、初始化配置,加载spring的基本配置信息。

初始化信息过程。

初始化信息的过程比较多,这里为了快速理解,我们只把最关键且必要的流程列出来。

1、初始化保存请求URL和Controller的关系并封装到HandleMaping里面。

2、初始化参数信息,保留方法名、方法参数,方法参数所在位置的关系。

3、初始化视图解析器的规则,在哪个文件夹下找对应的视图文件,前缀和后缀规则是怎样的。

请求处理过程。

请求处理过程是整个SpringMVC最核心的地方,这里统一接受用户的请求进行处理并响应用户结果。

1、接受用户对应类型的请求

2、对请求头参数进行处理。

3、获得用户请求的URL,并根据URL找到对应的Controller. 和method

4、把用户请求的参数封装传递给对应Controller的method。

5、Controller执行对应的method逻辑。

6、根据method响应信息,决定用什么视图方式响应给用户。

java mvc 源码分析_SpringMVC 源码解读笔记相关推荐

  1. java计算机毕业设计营养分析系统源码+数据库+系统+lw文档+部署

    java计算机毕业设计营养分析系统源码+数据库+系统+lw文档+部署 java计算机毕业设计营养分析系统源码+数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  2. 【Android 电量优化】JobScheduler 源码分析 ( JobServiceContext 源码分析 | 闭环操作总结 | 用户提交任务 | 广播接收者接受相关广播触发任务执行 )★

    文章目录 一.JobServiceContext 引入 二.JobServiceContext 源码分析 三.用户在应用层如何使用 JobScheduler 四.用户提交任务 五.广播接收者监听广播触 ...

  3. Android源码分析--MediaServer源码分析(二)

    在上一篇博客中Android源码分析–MediaServer源码分析(一),我们知道了ProcessState和defaultServiceManager,在分析源码的过程中,我们被Android的B ...

  4. Linux内核 eBPF基础:kprobe原理源码分析:源码分析

    Linux内核 eBPF基础 kprobe原理源码分析:源码分析 荣涛 2021年5月11日 在 <Linux内核 eBPF基础:kprobe原理源码分析:基本介绍与使用>中已经介绍了kp ...

  5. k8s源码分析--kube-scheduler源码(一)

    版本:v1.13.0 启动分析 kubernetes基础组件的入口均在cmd目录下,kube-schduler入口在scheduler.go下. kubernetes所有的组件启动采用的均是comma ...

  6. k8s client-go源码分析 informer源码分析(3)-Reflector源码分析

    k8s client-go源码分析 informer源码分析(3)-Reflector源码分析 1.Reflector概述 Reflector从kube-apiserver中list&watc ...

  7. xf86-video-intel源码分析1 —— 源码目录结构概览

    在<Spectacle/Flameshot/X11 Xlib截屏问题现象及解决方法>一文(链接如下)中提到, Spectacle/Flameshot/X11 Xlib截屏问题现象及解决方法 ...

  8. 【Android 热修复】热修复原理 ( 类加载分析 | 分析 PathClassLoader 源码 | 分析 BaseDexClassLoader 源码 | 分析 PathDexList 源码 )

    文章目录 一.分析 PathClassLoader 源码 二.分析 BaseDexClassLoader 源码 三.分析 PathDexList 源码 四. 源码资源 一.分析 PathClassLo ...

  9. 【Android 电量优化】JobScheduler 相关源码分析 ( JobSchedulerService 源码分析 | 任务检查 | 任务执行 )

    文章目录 一.回调 StateChangedListener 接口 二.JobHandler 处理 ( 任务检查 ) 三.maybeRunPendingJobsH 方法 四.assignJobsToC ...

最新文章

  1. Redis为什么又引入了多线程?单线程不香了?
  2. AI会让人类失业吗? 马云马化腾们不这么认为
  3. 我们用最详细的方式解析Android消息机制的源码,经典好文
  4. 在python中strip_python中strip()函数怎么用?
  5. [NOI2009] 变换序列 (匈牙利最大匹配)
  6. 移位操作提高代码的可读性_本地记录或类,以提高流操作的可读性
  7. K8S的HelloWorld之旅
  8. 设计有三个窗口的框架结构网页_技术周刊丨钢框架结构直接分析设计与传统设计方法对比研究——恒荷载作用结果对比...
  9. 【华为大咖分享】7.大型云平台的DevOps实践(后附PPT下载地址)
  10. 多任务的同步与相互排斥
  11. 【分享】小工具大智慧之Sql执行工具
  12. Deskreen 将 Web 浏览器变为第二屏幕
  13. 时间序列数据的平稳性检验
  14. JavaScript实现百度坐标系、火星坐标系、WGS84坐标系的互相转换
  15. 销售管理系统c语言 总结报告,C语言课程设计报告-药品销售管理系统.doc
  16. 黑月教主工具脱水印_PS三种去水印方法简单粗暴!看完你就学会!
  17. 【离散数学】p^q^r为什么既是合取范式又是析取范式
  18. Git正解 脱水版 【9. 其他VCS系统】
  19. 项目中引入阿里巴巴矢量字体图标库
  20. 计算机毕业设计ssm文档资料管理系统

热门文章

  1. Python 代码覆盖率统计工具 coverage.py
  2. sip消息类型和消息代码详解-转
  3. 用计算机制作模拟,计算机模拟设计,computer simulation design,音标,读音,翻译,英文例句,英语词典...
  4. Java任务调度框架Quartz教程实例
  5. Spring源码总结与分析
  6. 操作虚拟dom模拟react视图渲染
  7. 数据库查询索引(sql单个索引和复合索引)
  8. 据中心综合管理存在诸多挑战
  9. centos6.5 源码安装php7
  10. 《Redis实战》一1.2 Redis数据结构简介