高频面试题:SpringMVC的执行流程

news2024/9/20 16:23:08

SpringMVC一直以来都是面试中的重点,尽管随着近年来springboot和微服务的广泛流行,关于对springMVC的考察比重略有下降,但依然是面试中的重点,也需要我们对其有一个比较清楚和全面的认识。

如果将java的发展史中重要的组件进行排位,springMVC一定可以进前5,它的很多设计意向依然沿用至今。

Spring MVC是一种基于Java的Web框架,它采用了MVC(Model-View-Controller)设计模式,通过把Model,View,Controller分离,将Web层进行职责解耦,把复杂的Web应用分成逻辑清晰的几部分,并大大简化开发。

SpringMVC中有几个核心内容:

1>前端控制器DispatcherServlet,主要接收用户请求和响应请求,

2>应用控制器包括:处理器映射器(Handler Mapping)和视图解析器(View Resolver),处理器映射器负责处理器的管理,视图解析器负责视图的管理.

3>页面控制器,负责为controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现。

其执行流程主要包括以下几个步骤:

图片

l、客户端发送请求到DispatcherServlet

当客户端在浏览器中输入URL并发送请求时

2、DispatcherServlet会将请求的URL传递给HandlerMapping

HandlerMapping会根据URL找到相应的处理器(即Controller)

3、HandlerMapping会返回找到的处理器及其相关拦截器给DispatcherServlet

DispatcherServlet会将它们保存在处理器执行链中

里面会包含多个拦截器的信息,以及需要查找的处理器handler的信息

4、DispatcherServlet会将处理器对象传递给HandlerAdapter

HandlerAdapter会根据处理器类型调用相应的方法

5、HandlerAdapter会调用处理器(即Controller)的方法进行业务处理

并将处理结果封装成ModelAndView对象

6、处理器会将处理结果封装成ModelAndView对象并将其返回给HandlerAdapter对象

7、HandlerAdapter会将ModelAndView对象返回给DispatcherServlet,DispatcherServlet会将其保存起来。

8、DispatcherServlet会将ModelAndView中的viewName传递给ViewResolver

ViewResolver会根据viewName查找具体的视图对象(即View对象)

9、ViewResolver会将找到的视图对象返回给DispatcherServlet

DispatcherServlet会将其保存起来

10、DispatcherServlet会调用View的渲染方法

将ModelAndView中的数据渲染到具体的响应内容中

11、DispatcherServlet会将渲染后的响应内容返回给客户端完成整个请求处理过程

在执行过程中Spring MVC还提供了很多其他的组件

例如数据绑定、类型转换、数据校验、异常处理等

包括XML配置、Java配置和注解配置等

这些都可以根据具体的需求进行灵活配置。

以上为全部内容。

更多技术内容,欢迎扫码关注10W+技术社区。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

备忘录模式 详解

备忘录模式 简介: 保存一个对象的某个状态,以便在适当的时候恢复对象, 允许在不破坏封装性的前提下,捕获和恢复对象的内部状态。 场景: 很多地方都用到了备忘录模式, 比如网络消息的序列化和反序列化, 数据的本地保存与加载等, 最简单的json的dump和loa…

全能与专精:探索AI模型的未来之路

AI模型:追求全能还是专精? 近日,OpenAI预计在秋季推出代号为“草莓”的新AI。从专注于数学问题到处理主观营销策略,"草莓"模型展现出惊人的多样性。而这种全能型 AI 是否代表了未来趋势?相比专攻于某一领域…

OpenAI 将于今年秋天推出新的先进“Strawberry草莓”生成式人工智能产品

今年秋季,OpenAI将推出一款备受瞩目的新型生成式人工智能产品——“草莓”。据悉,这款名为“草莓”的AI程序将带来一系列创新突破,它将大幅提升人工智能处理复杂数学题、执行战略任务以及深入探索各种主题的能力,而这一切无需依赖…

前景堪忧?SaaS巨头Salesforce,25年辉煌后能否继续领跑市场?

最近,时常听到有人说Salesforce失去了活力,这或许是对整个生态系统的普遍感受。多年来,Salesforce一直保持着巨大的发展势头,通过收购、创新和建立良好的合作伙伴关系已发展成为云计算行业巨头。在经历了近25年创纪录的增长和创新…

记Spring HTTP Invoker远程调用的使用(二)基于Servlet方式,配置servlet映射url-pattern实现

目录 前言 一、概念 二、代码实现 1. 服务端实现 2. 客户端实现 前言 本篇接上一篇记Spring HTTP Invoker远程调用的使用(一)基于Url映射方式,DispatcherServlet统一处理实现-CSDN博客https://blog.csdn.net/u011529483/article/details/141…

论文解读:Prompt-aligned Gradient for Prompt Tuning

摘要 得益于CLIP等大型预训练的视觉语言模型VLM,我们可以通过离散的提示设计构建Zero-shot分类器,例如,利用图像与提示语句" a photo of a [ CLASS ] "之间的相似度,可以获得图像属于某个类别的置信度分数。此外&#…

【Material UI】Select组件的Customization详解

文章目录 一、Customization的基本概念1. 什么是Customization?2. 为什么要定制化Select组件? 二、定制化InputBase组件1. 定制化InputBase的步骤2. 定制化Select组件3. NativeSelect的定制化 三、Customization的最佳实践1. 使用标准变体(St…

JAVA后端框架【spring】--超详解

什么是spring? spring是一个轻量级的ioc和Aop的一站式java开发框架,简化企业级开发 轻量级:框架体积小(核心模块) IOC IOC:inversion of control 控制反转 把创建对象的控制权反转给spring框架 AOP Aop:面向切面编程 将程…

HarmonyOS( Beta5版)鸿蒙开发:应用冷启动与加载绘制首页

应用冷启动即当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用。 应用冷启动过程大致可分成以下四个阶段:应用进程创建&初始化、Application&Ability初始化、Ability生命周期、加载绘制首页。 加载绘…

常用Pandas操作(笔记整理)

目录 一、常用 1、创建DataFrame(数据导入) 2. 查看数据前⼏⾏(head) 3. 查看数据后⼏⾏(tail) 4. 查看数据基本信息(info) 5. 使⽤ value_counts 计算唯⼀值的频率 6. 描述性…

SpringBoot 3.x+Mybatis Plus多数据源极简配置

1. 创建项目 创建一个名为mybatis-plus-demo的项目,使用MavenJDK17。不会的请看 IntelliJ IDEA快速创建Spring Boot项目,最终项目结构,如下图。 2. 编写代码 根据最终项目结构,从下往上依次列出各个文件的代码。 2.1 pom.xml…

迷雾大陆攻略:VMOS云手机流派辅助和技能加持助力!

在《迷雾大陆》这款游戏中,选择一个合适的流派和技能加点至关重要。使用VMOS云手机,玩家可以享受到专属定制的云手机,内置游戏安装包,无需重新下载安装游戏。同时,VMOS云手机能够24小时不间断运行,自动完成…

STM32(F103ZET6)第二十课:FreeRtos操作系统的应用

目录 调试方式一、任务堆栈溢出检测二、任务管理方式三、二值信号量(任务同步)四、计数信号量五、互斥信号量六、队列 调试方式 问题:传感器数据获取问题,有的DHT11能获取到,有的获取不到 两种方式:调优先级或者进临界区&#xf…

Docker原理及实例

目录 一 Docker简介及部署方法 1.1 Docker简介 1.1.1 什么是docker? 1.1.2 docker在企业中的应用场景 1.1.3 docker与虚拟化的对比 1.1.4 docker的优势 2 部署docker 2.1 容器工作方法 2.2 部署第一个容器 2.2.1 配置软件仓库 2.2.2 安装docker-ce并启动服…

排序算法见解(2)

1.快速排序 1.1基本思想: 快速排序是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以…

如何构建Java SpringBoot文献检索系统:高效管理学术资料,掌握数据库核心技术

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

搭上“跨境电商”便车,中国家居在海外越杀越勇

文|新熔财经 作者|楷楷 从去年至今,已有多家跨境家居企业谋求IPO,包括近期启动IPO辅导的圣奥科技;今年4月正式向港交所递交招股说明书的傲基科技;去年11月启动A股IPO的跨境家居品牌杰西亚,还有…

vulhub xxe靶机通关教程

首先我们进行端口扫描 扫出来端口之后去尝试得出地址为183 发现robots.txt文件 由此我们就得到了两个目录 我们先进入xxe目录&#xff0c;并开始登录抓包 并进入重放器在xml里面构造语句 <!DOCTYPE r [ <!ELEMENT r ANY > <!ENTITY admin SYSTEM "php://filt…

【在Linux世界中追寻伟大的One Piece】传输层协议UDP

目录 1 -> 传输层 2 -> 端口号 2.1 -> 端口号范围划分 2.2 -> 知名端口号 3 -> UDP协议 3.1 -> UDP协议端格式 3.2 -> UDP的特点 3.2.1 -> 面向数据报 3.3 -> UDP的缓冲区 3.4 -> UDP使用注意事项 3.5 -> 基于UDP的应用层协议 1 -…

Vue实战:轻松掌握输入框@功能实现技巧

成员列表 创建 实现成员列表的方式比较简单&#xff0c;其实就是一个列表&#xff0c;一个简单的v-for循环就可以搞定&#xff0c;点击时将当前选择的成员项回调给父组件。 新增一个AtPop.vue文件&#xff1a; <template> <div class"at-pop-index">…