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

对于 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.hqwc.cn/news/21153.html

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

相关文章

阿里云ECS扩容硬盘空间及文件系统

一.通过阿里云控制台扩容硬盘 前往ECS实例详情页面的云盘页签。 登录ECS管理控制台。在左侧导航栏,选择实例与镜像 > 实例。在顶部菜单栏处,选择目标ECS实例所在地域。找到待扩容云盘所在的实例,单击实例ID。在实例详情页面,单…

android studio 添加并读取json配置文件

第一步&#xff1a;在android studio中添加json文件&#xff1b; 第二步&#xff1a;读取文件的函数 private String[] getJosnData(){String result[] null;List<String> list new ArrayList<>();try {//获取本地的Json文件AssetManager assetManager mConte…

解析Java类加载的运行机制和双亲委派模型

类加载运行机制 类加载形如把.class文件&#xff0c;加载到内存中&#xff0c;得到类对象这样的过程 类加载一共分为五个步骤&#xff1a; 加载验证准备解析初始化 加载 类加载的第一步是将编译好的 Java 类的字节码文件加载到 Java 虚拟机&#xff08;JVM&#xff09;中。类…

阿里云:机器学习平台及OpenSearch

机器学习流程 相关项目 BladeDISC-AI编译优化 EasyRec-推荐算法库 EasyCV-视觉图像算法库 EasyNLP-NLP/多模态算法库 模型开发中算法团队面临的工程挑战 Develop platform OpenSearch 向量检索库

1.4 MVP矩阵

MVP矩阵代表什么 MVP矩阵分别是模型&#xff08;Model&#xff09;、观察&#xff08;View&#xff09;、投影&#xff08;Projection&#xff09;三个矩阵。 我们的顶点坐标起始于局部空间&#xff08;Local Space&#xff09;&#xff0c;在这里他成为局部坐标&#xff08;L…

【大语言模型】LLM应用程序的新兴体系结构

LLM应用程序的新兴体系结构 LLM应用栈设计模式&#xff1a;In-context learningData Preprocessing/EmbeddingPrompt Construction/RetrievalPrompt Execution/Inference What about agents?展望参考资料 大型语言模型是构建软件的强大新基元。但由于它们非常新颖且与常规计算…

J2EE集合框架Map

目录 一.Map特点 1.无序&#xff0c;键值对&#xff0c;键不能重复&#xff0c;值可以重复 2.键重复则覆盖&#xff0c;没有继承Collection接口 二.遍历方式 1.拿到key,再拿值2.拿到映射关系&#xff0c;键值都有 取出保存所有Entry的Set,再遍历此Set即可 三.HashMap与H…

【数据结构】树与二叉树(上)

目录 前言&#xff1a; 一、树&#xff1a; 1.树的概念&#xff1a; 2.树的相关概念&#xff1a; 3.树的表示&#xff1a; 4.书的实际使用场景&#xff1a; 二、二叉树&#xff1a; 1.二叉树的概念&#xff1a; 2.两种特殊二叉树&#xff1a; ①.满二叉树&#xff1a;…

C++图形开发(16):绘制一个圆环和一根针

文章目录 绘制一个圆环和一根针1.1 绘制1.2 line()函数1.3 circle()函数1.4 setlinestyle()函数1.5 setlinecolor()函数 接下来&#xff0c;我会继续制作一些小游戏&#xff0c;但因为整个难度的上升&#xff08;毕竟我也是初学者&#xff09;&#xff0c;可能文章不会再像之前…

Can转RTU网关can总线转以太网设备

YC-CAN-RTU 是一款用于 CAN-Modbus 现场总线与 RS-232 总线或 RS-485 总线之间数据转换的协议型转换器&#xff0c;支持标准 Modbus RTU 协议。集成 1 路RS-232 通道、1 路RS-485 通道、1 路CAN-Modbus 通道&#xff0c;可以方便地嵌入使用 RS-232 接口和 RS-485 接口的节点上&…

openGauss学习笔记-08 openGauss 数据类型

文章目录 openGauss学习笔记-08 openGauss 数据类型8.1 数值类型8.2 布尔类型8.3 字符类型8.4 二进制类型8.5 日期/时间类型8.6 几何类型8.7 网络地址类型8.8 位串类型8.9 文本搜索类型8.10 UUID数据类型8.11 JSON/JSONB类型8.12 HLL数据类型8.13 范围类型8.14 索引8.15 对象标…

基于 OpenCV 的图像处理与分析应用的设计与实现

基于 OpenCV 的图像处理与分析应用的设计与实现 导语一、应用设计概述二、应用实现步骤三、应用示例&#xff1a;图像滤波与边缘检测总结 导语 图像处理与分析是计算机视觉中的重要应用领域&#xff0c;通过对图像进行处理和分析&#xff0c;可以提取有用的信息和特征&#xf…