SpringMVC执行流程

devtools/2024/9/18 12:40:54/ 标签: Spring, SpringMVC, mvc

 SpringMVC的执行流程(介绍核心组件)


SpringMVC是一个基于Java的开源Web应用程序开发框架,它遵循了MVC(Model-View-Controller)架构模式。MVC模式是一种将应用程序分为三个主要部分的设计模式,分别是模型(Model)、视图(View)和控制器(Controller)。模型负责处理数据,视图负责展示数据,控制器负责协调模型和视图之间的交互。

935a6622eb2f4af1b61135b4c8a84617.png

SpringMVC核心组件的功能:

  1. DispatcherServlet:前端控制器 (调度中心),用于接收HTTP请求并将其分派给相应的处理器。DispatcherServlet是整个请求处理的流程控制中心,它降低了组件之间的耦合性。
  2. HandlerMapping:用于确定HTTP请求需要被哪个处理器处理。HandlerMapping根据请求URL查找相应的处理器(就是Controller层对应路径的方法)。aba50efc9c5640eb8d57997188cb0e9b.png这个save方法就是一个处理器。
  3. HandlerAdapter:1.用于调用处理器(Handler比如说这里的save方法)并处理HTTP请求。2.处理Handler中的参数和返回值。HandlerAdapter会调用处理器,并返回一个ModelAndView对象,其中model是一个Map结构,存放了返回的所有数据,view是逻辑视图名,即ViewName。
  4. ViewResolver:用于确定响应结果的视图。ViewResolver根据ModelAndView对象中的逻辑视图名解析出具体的视图文件,再生成对应的View视图对象。

如果是基于接口开发,很多返回值是json格式,并没有ModelAndView对象。

1dd3525ff080442eb31bf1c2782962f2.png

处理器中某个方法添加了@ResponseBody注解,这个注解会把当前方法的返回值转化为json格式并响应给前端。

9d2278081f244b349b958db315b63369.png

95a9f0c6b87c45488a83ce0eb782fdbd.png


http://www.ppmy.cn/devtools/27745.html

相关文章

STM32 HAL库F103系列之IIC实验

IIC总线协议 IIC总线协议介绍 IIC:Inter Integrated Circuit,集成电路总线,是一种同步 串行 半双工通信总线。 总线就是传输数据通道 协议就是传输数据的规则 IIC总线结构图 ① 由时钟线SCL和数据线SDA组成,并且都接上拉电阻…

019Node.js的FS模块使用fs.stat检测文件还是目录

初始化项目 npm init或者 npm init --yes//fs.stat 检测是文件还是目录 const fsrequire(fs); //fs.stat(./html,function(err,data){fs.stat(./html,(err,data)>{if(err){console.log(err);return;}console.log(是文件${data.isFile()});console.log(是目录${data.isDire…

JMeter 请求头信息配置详解

在进行 Web 测试和 API 测试时,正确配置 HTTP 请求头是关键步骤之一,尤其当使用诸如 JMeter 这样的强大工具时。在本文中,我将详细介绍如何在 JMeter 中有效地配置和管理HTTP请求头。 在 JMeter 中添加和配置 HTTP 请求头 步骤 1: 打开 HTT…

自动化测试web库(元素定位、元素操作、浏览器操作)

按照谷歌浏览器 Chrome :https://googlechromelabs.github.io/chrome-for-testing/ Chrome使用技巧: 1、找到自己想要的标签 打开检查,点击箭头,再点击你想要点击的地方 2、直接在浏览器上查询,看看是否查询成功 可…

茴香豆:搭建你的RAG智能助理-笔记三

本次课程由书生浦语社区贡献者【北辰】老师讲解【茴香豆:搭建你的 RAG 智能助理】课程 课程视频:https://www.bilibili.com/video/BV1QA4m1F7t4/ 课程文档:Tutorial/huixiangdou/readme.md at camp2 InternLM/Tutorial GitHub 该课程&…

Kubernetes 弃用Docker后 Kubelet切换到Containerd

containerd 是一个高级容器运行时,又名 容器管理器。简单来说,它是一个守护进程,在单个主机上管理完整的容器生命周期:创建、启动、停止容器、拉取和存储镜像、配置挂载、网络等。 containerd 旨在轻松嵌入到更大的系统中。Docke…

【QT教程】QT6_QML性能优化秘籍

QT6_QML性能优化秘籍 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看…

【Oracle】python调取oracle数据教程

目录 (1)安装python和相关库 1.python的下载和安装 2.python安装cx_Oracle库和pandas库 3.本机安装instantclient 数据库客户端 先安装instantclient 然后设置环境变量 (2)准备好连接Oracle数据库地址等五项信息 &#xf…

[NeurIPS-23] GOHA: Generalizable One-shot 3D Neural Head Avatar

[pdf | proj | code] 本文提出一种基于单图的可驱动虚拟人像重建框架。基于3DMM给粗重建、驱动结果,基于神经辐射场给细粒度平滑结果。 方法 给定源图片I_s和目标图片I_t,希望生成图片I_o具有源图片ID和目标图片表情位姿。本文提出三个分支:…

python项目入门新手攻略

最近工作需要接手了代码量比较大的python开发的项目,平时写python不多,记录一下如何熟悉项目。 分析调用流程-pycallgraph 因为代码量比较大,所以希望通过工具生成代码调用流程,因此用到了pycallgraph。 pycallgraph&#xff0…

软件重构的要点及注意事项

重构是软件开发过程中改进现有代码结构和设计而不改变其外在行为的过程。良好的重构实践可以提高代码质量、可读性、可维护性,并促进后续的开发工作。以下是重构的基本步骤、要点及注意事项: 重构的基本步骤 明确重构目的:确定重构的动机&a…

(免费人工智能机器人、周报通、AI中文站、choose-car、智造喵)分享好用的ChatGPT

目录 1、ChatGPTer - 免费人工智能机器人 2、周报通 3、 AI中文站 - chat.7jm.cn 人工智能,稳定高效

HarmonyOS 应用开发——入门

首先当然是华为的官方文档了,要认真学习: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/start-overview-0000001478061421-V2 不想花时间看,可以看我下面总结的干货,哈哈 第一个问题:stage架构和fa架构的区…

Python | Leetcode Python题解之第59题螺旋矩阵II

题目&#xff1a; 题解&#xff1a; class Solution:def generateMatrix(self, n: int) -> List[List[int]]:matrix [[0] * n for _ in range(n)]num 1left, right, top, bottom 0, n - 1, 0, n - 1while left < right and top < bottom:for col in range(left, r…

速盾:cdn提升网站防护能力和访问速度

随着互联网的快速发展&#xff0c;网站的安全问题也变得越来越重要。为了保护网站的安全&#xff0c;CDN&#xff08;Content Delivery Network&#xff09;成为了一个重要的选择。CDN可以提升网站的防护能力和访问速度&#xff0c;为网站的用户提供更好的体验。 首先&#xf…

android:textColor=“?attr/colorBottomHintText“像这种颜色值怎么获取?

android:textColor"?attr/colorBottomHintText" 在Android中&#xff0c;?attr/colorBottomHintText是一种引用主题属性&#xff08;Theme Attribute&#xff09;的方式&#xff0c;用于动态获取主题中定义的颜色值。如果你想要在Java代码中使用这样的颜色值&…

Flask简介

Flask简介 安装概述使用PyCharm创建一个Flask程序 Flask程序的基本结构初始化路由和视图函数启动服务器请求-响应循环 安装 概述 Flask算是小型框架&#xff0c;小到可以称为“微框架”。Flask 非常小&#xff0c;因此你一旦能够熟练使用它&#xff0c;很可能就能读懂它所有的…

Matlab无法使用GBK编码保存文件,改用UTF-8编码(已解决)

系统不让保存GBK格式编码。但是可以通过matlab另存为 的方式保持为UTF-8编码&#xff0c;如下操作。 然后 在弹出的窗口中&#xff0c;选择 UTF-8 可以保持在与源文件相同的文件夹内&#xff0c;将源文件覆盖掉。就可以了。

Unity镂空图像做法

问题和解决方案 现在要完成一个需求&#xff0c;即镂空中间部分的image&#xff0c;外围image可以定义颜色并可选屏蔽点击&#xff0c;而中间的image需要透明且可以穿透&#xff0c;必须不能屏蔽点击。 由此拆分成了两个问题&#xff1a; 1.定义外围image颜色&#xff0c;内…

docker seata

docker pull seataio/seata-server:1.6.1 数据库脚本&#xff1a; incubator-seata/script/server/db at master apache/incubator-seata GitHub #先启动服务 docker run -d --name seata -p 8091:8091 -p 7091:7091 seataio/seata-server:1.6.1 #将配置文件拷贝出来 …