SpringMVC的工作流程

1、SpringMVC的定义

Spring MVC是基于Java的开源Web框架,它是Spring框架的一部分,用于构建MVC(Model-View-Controller)模式的Web应用程序。它提供了一种灵活且强大的方式来开发Web应用程序,并将应用程序的不同层进行解耦。

图片来源:https://zhuanlan.zhihu.com/p/573936691

在Spring MVC中,模型(Model)表示应用程序的数据和业务逻辑;视图(View)负责呈现数据给用户;控制器(Controller)处理用户请求、调用适当的模型处理逻辑,并将结果传递给视图进行展示。

Spring MVC借助于DispatcherServlet作为前端控制器,它是整个请求处理流程的核心。它负责接收所有的HTTP请求,并将请求分发给相应的处理器(Controller),然后处理器执行具体的业务逻辑,并返回模型数据给DispatcherServlet。最后,DispatcherServlet选择合适的视图进行渲染,将响应返回给客户端。

Spring MVC提供了丰富的特性和功能,包括请求映射、参数绑定、数据验证、数据转换、拦截器、国际化支持、文件上传等。它还与其他Spring项目(例如Spring Boot、Spring Security)集成得非常紧密,可以轻松地构建复杂的Web应用程序。

2、Spring 、Spring Boot、Spring MVC有什么区别?

 图片来源:https://zhuanlan.zhihu.com/p/573936691

3、SpringMVC的工作流程

图片来源:https://blog.51cto.com/u_15280110/3195954

3.1 发送请求

用户发送一个Http请求到web服务器,web服务器解析http请求,匹配到DispatcherServlet的请求映射路径(在web.xml文件中配置,后面专门有web.xml文件配置解析),web容器将请求转交给DispatcherServlet。

3.2 委托请求给处理器

DispatcherServlet接收到这个请求之后,根据http请求以及HandlerMapping中的配置(包括请求方法等),找到处理请求的处理器Handler。

 图片来源:https://blog.51cto.com/u_15280110/3195954

3.3 处理器适配器具体调用

找到处理请求的处理器Handler之后,此时的请求处理权就交给了Handler,然后Handler将具体的处理进行封装,再由具体的处理器适配器(HandlerAdapter)进行具体的调用。

3.4 返回ModelAndView逻辑视图对象

Handler执行完毕之后会向DispatcherServlet 返回一个ModelAndView对象。而这个ModelAndView对象是一个逻辑视图,并不是正式的视图。

3.5 视图渲染

DispatcherServlet接收到ModelAndView对象之后,通过ViewResolver对ModelAndView对象进行渲染,将逻辑视图转换为真正的View。

3.6 返回给客户端视图

DispatcherServlet通过Model解析ModelAndView的参数并最终返回给客户端视图信息。

4、使用SpringMVC

  • 将用户的访问(浏览器)和 后端Java 程序连接起来,即访问一个地址能够调用到我们的 Spring 程序。
  • 获取数据,用户访问的时候会添加一些参数,在程序中需要获取到这些数据。
  • 输出数据:执行了业务逻辑之后,需要把程序执行的结果返回给前端用户。

总而言之,Spring MVC是一个成熟、稳定且功能强大的Web框架,它简化了开发人员构建和管理Web应用程序的工作,提供了良好的可扩展性和灵活性。

参考:

【SSM】Spring MVC 程序开发(重点:SpringMVC 工作流程) - 知乎

SpringMVC工作执行流程详解_51CTO博客_springmvc执行流程

SpringMVC新手教程_在springmvc中创建了一个servlet类要用到service接口的对象该用哪个注解-CSDN博客

————————————————————————————————

感谢阅读,码字不易,多谢点赞!如有不当之处,欢迎反馈指出,感谢!

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

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

相关文章

python 之 矩阵相关操作

文章目录 1. **创建矩阵**:2. **矩阵加法**:3. **矩阵乘法**:4. **矩阵转置**:5. **元素级操作**:6. **汇总统计**:7. **逻辑操作**: 理解你的需求,我将为每个功能写一个单独的代码块…

docker部署与基础操作

目录 一、Docker 概述: 1. docker简介: 2. 容器的优点: 3. 容器在内核中支持2种重要技术: 4 . 容器与虚拟机 的区别: 5. docker三个核心概念: 二、安装docker: 1. 关闭防火墙: 2. 安…

使用MFC创建一个SaleSystem

目录 1、项目的创建: 2、项目的配置: 3、设置窗口属性: (1)、设置图标 1)、添加导入资源 2)、代码初始化图标 (2)、设置标题 (3)、设置窗口…

2023-10-22 LeetCode每日一题(做菜顺序)

2023-10-22每日一题 一、题目编号 1402. 做菜顺序二、题目链接 点击跳转到题目位置 三、题目描述 一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。 一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间&am…

【C++】特殊类实现

一、请设计一个类,不能被拷贝 拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝, 只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98 将拷贝构造函数与赋值运算符重载只声明不定义…

美团面试:Oracle JDK那么好,为何要用Open JDK?

说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 既然 Oracle JDK 这么好,那为什么还要有 OpenJDK&…

【Java基础面试三十八】、请介绍Java的异常接口

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:请介绍Java的异常接口 …

【Linux】基本操作指令汇总(不完全)

文章目录 操作系统概念补充lspwdsuechocdtouchmkdirrmdir指令 && rm 指令(重要)man指令cpmvcatmorelessheadtailstat时间相关的指令calfindgrepwcsortuniqwhichziptar:打包/解包,不打开它,直接看内容bcunamectrl cctrl rctrl d\ls cpulsmemdf-hw…

Android C/C++ native编程NDK开发中logcat的使用

Android C/C native编程NDK开发中logcat的使用 前言具体用法 前言 在NDK开发过程中,C/C层,需要对代码进行一些调试,日志打印是我们解决异常或崩溃的重要手段,这里我就简单介绍下日志打印三步走。 首先我们先看下官方文档关于日志…

一天吃透Java面试题

给大家分享我整理的Java高频面试题,有小伙伴靠他拿到字节offer了。 Java基础面试题 Java的特点Java 与 C 的区别JDK/JRE/JVM三者的关系Java程序是编译执行还是解释执行?面向对象和面向过程的区别?面向对象有哪些特性?数组到底是…

npm常用命令与操作篇

npm简介 npm是什么 npm 的英文是,node package manager,是 node 的包管理工具 为什么需要npm 类比建造汽车一样,如果发动机、车身、轮胎、玻璃等等都自己做的话,几十年也做不完。但是如果有不同的厂商,已经帮我们把…

信息检索与数据挖掘 | (五)文档评分、词项权重计算及向量空间模型

目录 📚词项频率及权重计算 🐇词项频率 🐇逆文档频率 🐇tf-idf权重计算 📚向量空间模型 🐇余弦相似度 🐇查询向量 🐇向量相似度计算 📚其他tf-idf权值计算方法 …

Jmeter —— jmeter参数化实现

jmeter参数化 在实际的测试工作中,我们经常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件的功能。这种测试方式在业界称为数据驱动测试, 而在实际测试工作中,测试工具中实现不同数据输入的过程称…

数据库管理-第112期 Oracle Exadata 03-网络与ILOM(20231020)

数据库管理-第112期 Oracle Exadata 03-网络与ILOM(202301020) 在Exadata中,除了对外网络以外,其余网络都是服务于一体机内部各组件的网络,本期对这些网络的具体情况和硬件管理相关做一个讲解。 1 网络分类 1.1 生产…

企业知识库软件,快速构建企业知识分享与团队协同的软件

企业知识库是一种特殊的在线协同文档工具,支持包括FAQ、文档、视频、知识图谱等。从本质上讲,它是基于企业知识库软件从而实现内部或外部知识的沉淀、集合、更新、共享等,能为员工或客户提供常见问题的标准回答。 今天我就基于HelpLook &…

敏捷是怎么提高工作效率的

敏捷管理是一门极力减少不必要工作量的艺术。 谷歌、亚马逊、苹果、微信、京东等全球 500 强企业都在用的管理方法,适用于各行各业,被盛赞为应获“管理学的诺贝尔奖”。 它专注于让员工不受种种杂事的羁绊,激发个体斗志,释放出巨大…

阶段六-Day05-MyBatis3

一、多表查询(面试题) 1. 介绍 多表查询是在企业中必不可少的,无论多么简单的项目里通常会出现多表查询的操作。因为只要是关系型数据库,在设计表时都需要按照范式进行设计,为了减少数据冗余,都会拆成多个…

Proteus仿真--量程自动切换数字电压表(仿真+程序)

本文主要介绍基于51单片机的量程自动切换数字电压表Proteus仿真设计(完整仿真源文件及代码见文末链接) 简介 硬件电路主要分为单片机主控模块、AD转换模块、量程选择模块以及数码管显示模块 (1)单片机主控模块:单片…

OpenStack云计算平台实战-----创建空白虚拟机

1、创建空白虚拟机 需要注意的步骤会截图一下,其它的基本都是下一步,默认的即可 建议将虚拟机命名为自己的名字加后缀 将处理器数量和每个处理器的内核量都修改为2 将虚拟机的内存设置为8G,不然不够用 将指定磁盘大小设置为200G,…

精讲stable diffusion的controlNet插件

controlNet插件是stable diffusion的一个重要插件,甚至可以说正是因为有了controlNet插件,stable diffusion才会具有midjourney所不具备的独特魅力! 我们今天就一起来学习下controlNet插件的安装和每个模型的用法 插件主页 独立的controlN…