说说 Spring MVC 的执行流程?

昨天,一个工作 2 年的粉丝在面试的时候,面试官要求他说 Spring MVC 的执行流程。
他没回答上来,错过了这个 offer。
这个问题在我之前整理的大厂面试指南里面,有标准的回答,大家可以去文章结尾中领取。

一、问题解析 

Spring MVC 的执行流程,一个面试频率超级高的问题,但是缺难倒了无数的程序员。
这个问题的考察范围主要是 3~5 年 ,甚至 5 年以上 都会问到。和它同类型的问题还有Bean 的加载过程、IOC 的原理等。
由于 Spring MVC 是基于 Jsp/Servlet 之上做的封装,并为开发人员提供了 MVC 的分层设计以及更加友好的开发模型。所以我认为大家都应该去把 Spring MVC 的整个执行流程梳理一遍。

二、问题总结

Spring MVC 的工作流程可以分为几个步骤
1. 用户发起请求,请求先被 Servlet 拦截转发给 Spring MVC 框架
2. Spring MVC 里面的 DispatcherSerlvet 核心控制器,会接收到请求并转发给HandlerMapping
3. HandlerMapping 负责解析请求,根据请求信息和配置信息找到匹配的 Controller类,不过这里如果有配置拦截器,就会按照顺序执行拦截器里面的 preHandle 方法
4. 找到匹配的 Controller 以后,把请求参数传递给 Controller 里面的方法
5. Controller 中的方法执行完以后,会返回一个 ModeAndView,这里面会包括视图名称和需要传递给视图的模型数据
6. 视图解析器根据名称找到视图,然后把数据模型填充到视图里面再渲染成Html内容返回给客端
以上就是我的理解!

 

三、粉丝福利

最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的学习经验整理出来了一份 50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我
公众号:“ 灰灰聊架构 ”, 回复暗号:“ 321 ”即可获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/307097.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯单片机国一分享——你的蓝桥杯单片机第一课,如何入门与如何备赛

国一证书 第一章 获取信息的途径 其实任何教程或者任何网站都都不可能做得尽善尽美,甚至是官方的也是如此,也不可能适合每个人,所以我首先向你们提供我在备赛时使用到的几个有用的网站, 官网:https://dasai.lanqiao.cn…

Android Context在四大组件及Application中的表现

文章目录 Android Context在四大组件及Application中的表现Context是什么Context源码Activity流程分析Service流程分析BroadcastReceiver流程分析ContentProvider流程分析Application流程分析 Android Context在四大组件及Application中的表现 Context是什么 Context可以理解…

C++ //例13.14 将一批数据以二进制形式存放在磁盘文件中。例13.15 将刚才以二进制形式存放在磁盘文件中的数据读入内存并在显示器上显示。

C程序设计 (第三版) 谭浩强 例13.14 例13.15 例13.14 将一批数据以二进制形式存放在磁盘文件中。 例13.15 将刚才以二进制形式存放在磁盘文件中的数据读入内存并在显示器上显示。 IDE工具:VS2010 Note: 使用不同的IDE工具可能有部分差异。…

TiDB故障处理之让人迷惑的Region is Unavailable

背景 最近某集群扩容了一批物理机,其中 TiKV 节点有6台机器12个实例,同时调整了 label 设置增加了一层机柜级容灾。因为前期做了比较充分的准备工作,到了变更窗口只等着执行scale-out就行,操作过程也很顺利,很快就把所…

Lumerical------按键中断程序执行

Lumerical------中断程序执行 引言正文 引言 在 Lumerical 中,很多时候我们需要通过 sweep 的方式来获取我们想要的结果,然而,有时候当我们运行程序后发现书写的脚本有问题时,我们想要强行终止程序的执行,该怎么办呢&…

C#中的Attribute详解(上)

C#中的Attribute详解(上) 一、Attribute是什么二、Attribute的作用三、Attribute与注释的区别四、系统Attribute范例1、如果不使用Attribute,为了区分这四类静态方法,我们只能通过注释来说明,但这样做会给系统带来很多…

【QT】QStringListModel类的应用介绍

目录 1 概述 2 QStringListModel常用方法 3 使用QStringListModel的步骤 4 QStringListModel的使用 4.1 Model/View结构对象和组件初始化 4.2 编辑、添加、删除项的操作 4.3 以文本显示数据模型的内容 4.4 其他功能 1 概述 QStringListModel用于处理字符串列表的数据模型…

VSCode安装Go环境

VSCode安装Go 1.点击Go官网,根据自己环境下载go安装包,我这里为Windows 2.双击安装包,一直点击【Next】即可 VSCode配置Go基础环境 1.创建Go的工作目录: C:\Code\GoCode 2.创建Go的环境变量: GOPATH (1)右键【此电脑】,点击…

2024年第四届电气、电子与信息工程国际会议(ISEEIE 2024) | Ei&Scopus双检索

会议简介 Brief Introduction 2024年第四届电气、电子与信息工程国际会议(ISEEIE 2024) 会议时间:2024年9月26日-28日 召开地点:英国莱斯特(Leicester, UK) 大会官网:www.iseeie.org 2024年第四届电气、电子与信息工程…

器件的静态特性

器件的静态特性 静态特性(伏安特性) 1.器件在导通或关断的状态下,其电压与电流对应关系。 2.静态过程体现器件最基本的电压与电流稳态特性。 动态特性(开关特性) 1.器件在开或关过程中,其电压、电流随时…

7.7复原IP地址(LC93-M)

算法: 根据题意 有效的 IP 地址 : (1)由四个整数构成 (2)每个整数位于 0 到 255 之间 (3)每个整数不能含有前导 0,如011、021等,但是可以有单独的一个“…

使用Jenkins和单个模板部署多个Kubernetes组件

前言 在持续集成和部署中,我们通常需要部署多个实例或组件到Kubernetes集群中。通过Jenkins的管道脚本,我们可以自动化这个过程。在本文中,我将演示如何使用Jenkins Pipeline及单个YAML模板文件(.tpl)来部署多个类似的…