Spring 2023面试题(2)--Spring mvc 运行流程

news2024/9/21 19:20:34

1. Spring MVC的运行流程主要包括以下步骤:

  1. 用户发送请求到前端控制器(DispatcherServlet)。
  2. 前端控制器接收到请求后,初始化处理器映射器(HandlerMapping)和处理器适配器(HandlerAdapter)。
  3. 前端控制器根据请求的URL和Method,使用处理器映射器找到符合条件的处理器(Handler)。
  4. 处理器映射器将处理器封装成处理器执行链,并返回给前端控制器。
  5. 前端控制器将处理器执行链传递给处理器适配器。
  6. 处理器适配器根据处理器执行链找到对应的控制器(Controller)和方法,并调用控制器方法执行。
  7. 在控制器方法执行前后,可以根据需要执行拦截器(Interceptor)的preHandle和postHandle方法。
  8. 控制器方法执行完成后,返回一个ModelAndView对象给处理器适配器。
  9. 处理器适配器将ModelAndView对象传递给前端控制器。
  10. 前端控制器使用视图解析器(ViewResolver)将ModelAndView对象解析成视图对象(View)。
  11. 前端控制器将视图对象渲染成响应结果,并将响应结果返回给用户。
--> Request --> DispatcherServlet  
         |  
         v  
        HandlerMapping --> Handler  
         |  
         v  
        适配器 --> PreHandle --> 目标方法  
         |                   |  
         v                   v  
        PostHandle --> 异常解析器 --> ModelAndView  
         |  
         v  
        视图解析器 --> View  
         |  
         v  
         --> Response

2. 流程图:

在这里插入图片描述

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

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

相关文章

Crypto(小学期培训)

你被骗了 url编码直接解 进入网站、找到时间 flag{2020-01-01 07:43:23} 梅开二度 凯撒密码 y和h相差17 三羊开泰 词频分析 这是??? 010编辑器打开 上面是密文 下面是密码表64个,想到base64 找到原来的数值 与之对应&a…

JVM GC ROOT分析与垃圾收集器原理分析(三)

目录 一、GC ROOT 1、虚拟机栈中的本地变量 2、static 成员 3、常量引用 4、本地方法栈中的变量 5、类加载器 6、线程 二、回收算法 1、标记和清除 2、复制算法 3、标记整理 三、垃圾收集器 1、新生代-复制算法 2、老年代-标记清除/整理 3、垃圾收集器分类 1、…

Python如何向一个空列表中append列表

最近在做回溯组合问题时–力扣链接,遇到了向一个空列表中append多个列表。 于是,我原来的代码是: def main(n,k):result []temp []def backtrack(n,k,startIndex):if(len(temp)k):result.append(temp)returnfor i in range(startIndex,n1)…

group by rollup

group by rollup rollup与group by组合使用可对分组结果进行进一步的汇总(相当于对分组结果加一行小计)。 mysql : SELECT CASE WHEN GROUPING(姓名)1 THEN 总计 ELSE 姓名 END AS 姓名, SUM(数值1) 统计数值1, SUM(数值2) 统计数值2 FROM 表名 GROUP BY 姓名 WITH ROLLUPora…

SpringCloud微服务项目实战(一)---搭建SpringBoot项目

目录 SpringBoot与SpringCloud的关系环境配置开始搭建SpringBoot项目问题总结 SpringBoot与SpringCloud的关系 Spring Boot主内,能够快速搭建,快速开发单个微服务,搞定了数据层访问、RESTful 接口、日志组件、内置容器等等基础功能Spring Cl…

shardingsphere-proxy 实现mysql单库分表

1、docker安装mysql5.7版本 拉取mysql的镜像 docker pull mysql:5.7创建mysql的配置目录,日志目录,数据存储的目录 mkdir -p /home/sunyuhua/docker/mysql/conf mkdir -p /home/sunyuhua/docker/mysql/logs mkdir -p /home/sunyuhua/docker/mysql/dat…

微信小游戏:超大数值计算

测试代码: import {large_number} from "./large_number";const {ccclass, property} cc._decorator;ccclass export default class NewClass extends cc.Component {property(cc.Label)label: cc.Label null;propertytext: string hello;// LIFE-CYCL…

操作符重载的概念

下面的复数解决方案是否可行? Add 函数可以解决 Complex 对象相加的问题,但是 Complex 是现实世界中确实存在的复数,并且复数在数学中的地位和普通的实数相同 为什么不能让 操作符也支持复数相加呢? 操作符重载 C 中的重载能够…

四、OkHttp_连接池

预备知识 通常我们进行HTTP连接网络的时候我们会进行TCP的三次握手,然后传输数据,然后再释放连接。 大量的连接每次连接关闭都要三次握手四次分手的很显然会造成性能低下, 因此http有一种叫做keep-alive connections的机制(HTTP1…

【每日一题】Leetcode - 10. 正则表达式匹配

题目 Leetcode - 10. 正则表达式匹配 解题思路 预处理正则表达式,合并同项,比如: "a * b * c * . * " -> " . * "更加预处理后的正则表达式,构建NFA通过NFA状态转移条件一个一个匹配字符串字符不匹配的状态要回退匹…

【统一安全管控平台】4A解析

文章目录 一、统一帐号(Account)二、统一认证(Authentication)三、统一授权(Authorization)四、统一审计(Audit)参考&感谢 4A是指帐号(Account)、认证(Authentication)、授权(Authorization…

mysql8.0新特性详解

一、my.ini或my.cnf的全局参数 一个连接最少占用内存是256K,最大是64M,如果一个连接的请求数据超过64MB(比如排序),就会申请临时空间,放到硬盘上。 #最大连接数 max_connections3000 #最大用户连接数 max_…

智能饮品机器人的市场现状与前景未来,点赋科技与您共同期待

引言: 近年来,智能饮品机器人行业迅猛发展,成为引人瞩目的新兴市场。然而,这个行业的市场现状到底如何?它的前景又将如何发展?让点赋科技带大家一起来看看。 市场现状: 智能饮品机器人市场在过去…

解锁高效部署!快速搭建Kubernetes集群,提升团队生产力!

1 MacOS 1.1 下载 docker-desktop 从 docker 下载 docker-desktop (opens new window),并完成安装 1.2 启用 k8s 集群 启动 docker-desktop,打开preference 面板 切换到 Kubernetes 标签页,并勾选启动 Enable Kubernetes,点击…

nginx 入门 (b站IT楠老师学习笔记)

文章目录 Nginx 入门 (b站IT楠老师学习笔记)一 基础了解1、下载nginx安装包2. nginx 可以提供的服务3. nginx 的优点4. 应用场景 二 实战2.1 基础检查以及配置文件结构了解2.2 main全局配置2.3 events模块2.4 http服务器配置2.5虚拟主机配置详解2.5.1 ht…

el-pagination分页查询封装

需求&#xff1a;因为需要用到表单查询的地方太多了&#xff0c;所以为了避免每个页面都写分页组件&#xff0c;直接封装好调用就完事了&#xff0c;简简单单 1.创建Pigination.vue公用组件 <template><div :class"{hidden:hidden}" class"paginatio…

AD中修改一个元器件的所有焊盘大小

1.首先&#xff0c;选中其中一个焊盘。 2.查找相似对象 3.修改component为same 4.修改X size和Y size为same 5.确定 6.修改Pad Stack中的x/y 注&#xff1a;component可以不用改为same&#xff0c;用any就是查找和这个焊盘大小类似的对象。

力扣1768.交替合并字符串(java模拟法)

题目描述&#xff1a; 给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 问题分析&#xff1a; 我们可以直…

servlet 监听器

做法: 在web.xml中: 或

矩形中的正方形:探究力扣最大正方形问题的奥秘

本篇博客会讲解力扣“1725. 可以形成最大正方形的矩形数目”的解题思路&#xff0c;这是题目链接。 本题的思路是&#xff1a;对于每一个矩形&#xff0c;切分出来的最大正方形的边长是矩形的长和宽的较小值。我们需要维护最大的正方形边长&#xff0c;并统计数目。 我们可以写…