对于 Spring MVC 了解? SpringMVC 的执行流程?SpringMVC 的核心是什么?请求的流程是怎么处理的?控制反转怎么实现的?

news2024/10/5 15:24:46

对于 Spring MVC 了解?

之前 Model1 和 Model2 这两个没有 Spring MVC 的时代。

 Model1 时代 : 整个 Web 应用几乎全部用 JSP 页面组成,只用少量的 JavaBean 来处理数据库连接、访问等操作。  JSP 既是控制层又是表现层,存在很多问题,如①将控制逻辑和表现逻辑混杂在一起,导致代码重用率极低;②前端和后端相互依赖,难以进行测试并且开发效率极低;

Model2 时代 :Java Bean(Model)+ JSP(View,)+Servlet(Controller) 这种开发模式是早期的 JavaWeb MVC 开发模式,Model:系统涉及的数据,也就是 dao 和 bean。View:展示模型中的数据,只是用来展示。Controller:处理用户请求都发送给返回数据给 JSP 并展示给用户。 Model2 模式下还存在很多问题,抽象和封装程度还远远不够,开发时不可避免会重复造轮子,大大降低了程序的可维护性和复用性,于是很多JavaWeb开发相关的 MVC 框架应运而生,如 Struts2,但 Struts2 比较笨重。

随着 Spring 轻量级开发框架的流行, Spring 生态圈出现了 Spring MVC 框架, Spring MVC 是当前最优秀的 MVC 框架。相比于 Struts2 , Spring MVC 使用更加简单和方便,开发效率更高,并且 Spring MVC 运行速度更快。

MVC 是一种设计模式,Spring MVC 是一款很优秀的 MVC 框架

Spring MVC 可以帮助进行更简洁的Web层的开发,并且它天生与 Spring 框架集成,把后端项目分为 Service层(处理业务)、Dao 层(数据库操作)、Entity层(实体类)、Controller层(控制层,返回数据给前台页面)

Spring MVC 的简单原理图如下:

SpringMVC 的执行流程?

1. 客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求

2. DispatcherServlet收到请求后,将根据请求的信息(包括URL、HTTP协 议方法、请求头、请求参数、Cookie等)以及HandlerMapping的配置找到处理该请求的Handler(任何一个对象都可以作为请求的Handler)

3. 在这个地方Spring会通过HandlerAdapter对该处理器进行封装

4. HandlerAdapter是一个适配器,它用统一的接口对各种Handler中的方法进行调用

5. Handler完成对用户请求的处理后,会返回一个ModelAndView对象给 DispatcherServlet,ModelAndView 包含了数据模型以及相应的视图的信息

6. ModelAndView的视图是逻辑视图DispatcherServlet还要借助 ViewResolver完成从逻辑视图真实视图对象的解析工作

7. 当得到真正的视图对象后,DispatcherServlet会利用视图对象对模型数据进行渲染

8. 客户端得到响应,可能是一个普通的HTML页面,也可以是XML或JSON字 符串,还可以是一张图片或者一个PDF文件

SpringMVC 的核心是什么?

控制反转面向切面

SpringMVC 请求的流程是怎么处理的?

 1、首先用户发送请求到前端控制器,前端控制器根据请求信息(如URL) 来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分

2、页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名)

3、前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染

4、前端控制器再次收回控制权,将响应返回给用户

SpringMVC 控制反转怎么实现的?

每次使用spring框架都要配置xml文件,这个xml配置了bean的id和 class。

spring中默认的bean为单实例模式,通过bean的class引用反射机制可以创建这个实例。

因此,spring框架通过反射替我们创建好了实例并维护他们。 A需要引用B类,spring框架就会通过xml把B实例的引用传给了A的成员变量。

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

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

相关文章

逆天!安卓正式超越 Windows 成世界第一大操作系统

导读Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。 10 亿的用户数意味着 Windows 依然是第一大桌面操作系统,不过如果算上智能手机平台…

抖音seo源码矩阵系统开发规则开发者分享(一)

抖音SEO矩阵系统源码开发,需要遵循一下步骤 1. 确定需求和功能:明确系统的主要目标和需要实现的功能,包括关键词研究、短视频制作、外链建设、数据分析、账号设置优化等方面。 2. 设计系统架构:根据需求和功能确定系统的架构&am…

微信公众号错误代码:40125

微信公众号错误代码:40125 报错代码 错误代码:40125, 错误信息:invalid appsecret rid: 64b0ba1d-74e53e36-717abb43, 微信原始报文:{"errcode":40125,"errmsg":"invalid appsecret rid: 6…

金融数据库的战场,太平洋保险和OceanBase打了场胜仗

点击关注 文丨刘雨琦 “数据库的国产替代,必须经过严格的考虑,保证不会出错,所以大多数企业的领导层选择按兵不动或者简单扩容。因为不换就不会错,选了很久如果选错,还可能会出现重大事故。” 某银行数据库技术人员…

UG\NX二次开发 获取对象的边界包容盒 UF_MODL_ask_bounding_box_aligned

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 获取对象的边界包容盒 UF_MODL_ask_bounding_box_aligned,可以得到指定坐标系下的盒子,速度快,结果不精确 效果: 代码: //UF_MODL_ask_bounding_box_aligned #include "me.hpp" #i…

【ABAP】数据类型(六)「域的概要」

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较…

Java使用EsayExcel导出模板,涉及多个sheet

需求:利用excel模板导出,有两个sheet,其中一个sheet涉及固定字段导出和多数 据(List)导出 1、模板 sheet1: sheet2: 2、主要代码 public static void outputExcelForTunnelMonitor(HttpServletResponse r…

EBU5476 Microprocessor System Design 知识点总结_8 I2C

I2C 连接多个模块的传输方案:I2C,使用两根总线。 两根总线分别是时钟总线 SCL 和数据总线 SDA。 通信过程 现在我们串一遍I2C上一个模块(master)要给另一个模块(slave)发消息的过程。 MCU 使用一定的方法…

玩转代码|Linux中Thread Local Storage(线程局部存储)

目录 pthread的内存结构 __thread pthread specific API __thread和pthread specific API对比 存储区域/寻址方式不同 性能/效率不同 能存储的数据不同 支持的数据个数不同 在C/C程序中,全局变量默认是所有线程共享的,开发者需要处理多线程竞争问…

如何在短时间内提高亚马逊关键词排名?

搜索购买可以在短时间内提高亚马逊关键词排名,操作方法是通过独立买家账号搜索关键词,找到商品,点击购买,提高关键词的相关性和保留率,让关键词排名自然提高,从而达到上首页的目的。不过要操作这一个方法还…

储能协调控制器装置|储能协调控制设备|储能系统功率控制器|源网荷储互动终端这种装置是什么?应用实施方案如何?

什么是储能协调控制器装置|储能协调控制设备|储能系统功率控制器|源网荷储互动终端及其应用实施方案 一:新型电力系统背景 以新能源为主体的新型电力系统是以新能源为供给主体、以确保能源电力安全为基本前提、以满足经济社会发展电力需求为首要目标,以…

Spring - 更简单的存取 Bean 对象(使用注解)

目录 一、类注解是什么 二、使用类注解 存取 Bean 对象 1. 准备工作 2. 所以使用五大类注解的规则: 三、五大类注解之间的关系 1. 首先可以查看 类注解的源码如下图: 2. 为什么需要五个类注解? 3. 为什么使用类注解的方式不能使用原类…

挖矿记录+解决方案:利用GitLab组件对服务器进行挖矿导致CPU占用200%

文章目录 什么是云服务器挖矿?事件记录事件分析产生影响解决方案后期预防什么是云服务器挖矿? 云服务器挖矿是指利用云服务器从事赚取比特币的活动。比特币是一种虚拟数字货币,挖矿是将一段时间内比特币系统中发生的交易进行确认,并记录在区块链上形成新区块的过程。 用于…

青岛大学_王卓老师【数据结构与算法】Week05_06_栈的顺序表示_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享, 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础…

【数据结构】之红黑树

红黑树 红黑树的概念红黑树的性质红黑树的插入操作(核心)情况一:uncle存在且为红情况二:uncle不存在/存在且为黑(在同一侧)情况三:uncle不存在/存在且为黑(在两侧)总结 红…

三、学习分类 - 基于图像大小进行分类

天下一半剑仙是我友 谁家娘子不娇羞 我以醇酒洗我剑 谁人说我不风流 1 设置问题 根据图片的尺寸,把图片分为纵向图像和横向图像。这种把图像分成两种类别的问题,就是二分类问题。 纵向图片示例: 横向图片示例: 这样就有了两个…

【Go语言开发】简单了解一下搜索引擎并用go写一个demo

写在前面 这篇文章我们一起来了解一下搜索引擎的原理,以及用go写一个小demo来体验一下搜索引擎。 简介 搜索引擎一般简化为三个步骤 爬虫:爬取数据源,用做搜索数据支持。索引:根据爬虫爬取到的数据进行索引的建立。排序&#xf…

Wsl 错误 0x80004002 解决

wsl2安装教程:https://www.jianshu.com/p/6e7488440db2 我安装的过程中出现了如下错误: 解决办法: 已管理员身份运行Powershell运行以下命令以获取包的全名 Get-AppxPackage |? { $_.Name -like "*WindowsSubsystemforLinux*"…

(33)(33.3) 连接实例

文章目录 前言 33.3.1 嵌入在集体PPM/总信号通道中的RSSI 33.3.2 模拟电压型RSSI被输送到一个专用引脚 33.3.3 PWM类型的RSSI输送到一个专用引脚 前言 以下是典型的 RC 接收机 RSSI 连接方案示例: 33.3.1 嵌入在集体PPM/总信号通道中的RSSI 通常的做法是在一根…

NLog写日志到数据库

需求&#xff1a;NLog写日志到数据库 一、必须要安装&#xff1a; System.Data.SqlClient 二、 NLog配置&#xff1a; <?xml version"1.0" encoding"utf-8" ?> <nlog xmlns"http://www.nlog-project.org/schemas/NLog.xsd" …