Spring MVCSpring Boot

news2025/1/9 17:12:27

文章目录

  • Spring MVC
    • 什么是MVC模式
    • Spring MVC优点
    • SpringMVC 运行流程
    • SpringMVC组件
    • SpringMVC常用的注解有哪些
    • SpringMVC的拦截器和过滤器有什么区别?执行顺序是什么
  • SpringBoot
    • 对SpringBoot的理解
    • Spring和SpringBoot的关系?
    • SpringBoot有哪些核心注解
    • SpringBoot的自动配置原理
    • 为什么SpringBoot的可以直接运行

Spring MVC

Spring MVC :是基于spring的一个开源框架,实际上是spring的一个模块,专门用来做web开发的。可以理解为Servlet的一个升级。所有的web开发底层都是Servlet,框架是在Servlet基础上简化开发并且加入一些功能。

web开发底层是Servlet,springMVC中有一个对象时Servlet:DispatherServlet(中央调度器),负责接收用户的所有请求,用户把请求给了DispatherServlet,之后DispatherServlet把请求转发给我们的Controller(@Controller创建的对象)对象,最后是Controller对象处理请求。

什么是MVC模式

M——Model模型:完成业务逻辑,由JavaBean构成,service + dao+entity

V——view视图:看到的页面

C——Controller控制器:接收请求、调用模型

当一个请求发送过来之后,会先到到Controller控制层,控制层在交给Model模型层处理,Model层处理完成之后,返回处理结果给Controller层,在通过View视图层渲染后相应给用户。

Spring MVC优点

  1. 基于MVC结构。分工明确,解耦合
  2. 容易理解,上手快,使用简单
  3. 作为spring框架的一部分,方便整合Mybatis等其他框架。
  4. SpringMVC强化注解的使用。

SpringMVC 运行流程

在这里插入图片描述

  1. 前端发送过来的请求,先经过DispatcherServlet中央处理器也称为前端控制器。

  2. 前端控制器DispatcherServlet接收请求后,调用映射处理器HandlerMapping。

    HandlerMapping根据请求的URL找到处理该请求的Handler(即Controller),将处理器Handler返回给前端控制器。

  3. 前端控制器根据获取到的Handler,选择一台合适的HandlerAdapter处理适配器,处理适配器调用处理器相应的处理方法。

  4. Handler执行后,向DispatcherServlet返回一个ModelAndView对象。

  5. 对返回的ModelAndView进行视图解析,将View返回给DispatcherServlet。

  6. View结合Model进行视图渲染。

  7. 响应给客户。

SpringMVC组件

  • DispatcherServlet:Spring中提供了DispatcherServlet类,它从HTTPServlet继承而来,他就是Spring MVC中的前端控制器。
  • HandlerMapping:DispatcherServlet自己并不处理请求,而是将请求交给页面控制器。那么在DispatcherServlet中如何选择正确的页面控制器呢?这件事就交给了HandlerMapping,进过HandlerMapping处理之后,DispatcherServlet就知道要调用哪个页面处理器来处理了。
  • HandlerAdapter:经过了HandlerMapping 处理之后,DispatcherServlet就获取到了处理器,但是处理器有多种,为了方便调用,DispatcherServlet将这些处理器包装成处理适配器HandlerAdapter,HandlerAdapter调用真正的处理器的功能处理方法,完成处理功能,并返回一个ModelAndView对象。

SpringMVC常用的注解有哪些

@RequestMapping:用于映射web请求,包括访问路径和参数

@RestController:该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着该Controller的所有方法都默认加了@ResponseBody。

@ResponseBody:支持将返回值放到response内,而不是一个页面,通常用户返回json数据。

@RequestBody:允许request的参数在request体内,而不是在直接连接的地址后面。

SpringMVC的拦截器和过滤器有什么区别?执行顺序是什么

过滤器是Servlet规范规定的对所有的web请求起作用,而拦截器只对action起作用;

过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器;

过滤器不能访问容器中的Bean(DI)(基于Spring注册过的过滤器也可以访问容器中的Bean),而拦截器可以访问

执行顺序:

在这里插入图片描述

SpringBoot

对SpringBoot的理解

SpringBoot是用来快速开发spring应用的脚手架,其设计目的是用来简化spring应用的初始化搭建以及开发工程。

springBoot内置web服务器,省略了Web.xml,直接运行jar文件就可以启动web应用;

SpringBoot帮我们管理了常用的第三方依赖版本,减少了版本冲突问题;

提供自动配置,对主流框架无配置集成,开箱即用。

Spring和SpringBoot的关系?

SpringBoot是Spring生态产品;

SpringBoot他不是一个框架,它是一个可以快速构件基于spring的脚手架,二者不是一个层面的东西,没有可比性。

SpringBoot有哪些核心注解

@SpringBootApplication注解:这个注解标识了SpringBoot工程,写在启动类上

@SpringBootConfiguration:这个注解实际就是一个@Configuration,表示启动类也是一个配置类

@EnableAutoConfiguration:启动自动配置类的。自动扫描所有的自动配置类并启动

SpringBoot的自动配置原理

  1. 通过@SpringBootConfiguration引入@EnableAutoConfiguration负责启动自动配功能
  2. @EnableAutoConfiguration引入了@import
  3. Spring容易启动时:加载IOC容器时会解析@Import注解
  4. @Import导入了一个deferredImportSelector,它会使SpringBoot的自动配置类的顺序在最后,这样方便扩展和覆盖
  5. 然后读取所有的/META-INF/spring.factories文件
  6. 过滤出所有AutoConfigurationClass类型的类
  7. 最后通过@Condition排除无效的自动配置类。

为什么SpringBoot的可以直接运行

  1. SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包称为一个可执行的jar包;
  2. SpringBoot应用打包后生成一个Fat jar(包含jar包的jar),包含了应用依赖的jar和SpringBoot loader相关的类;
  3. 通过指令java - jar运行jar时会去找jar中的manifest文件,在那里面找到真正的启动类(Main-Class);
  4. Fat jar的启动Main函数是JarLauncher,找到manifest中的Start-Class

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

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

相关文章

IMv1.0

一、背景内容 总结golang基础内容,通过一个实例实时 IM系统简进行总结知识 二、简要的图 简要说明: 1.在server.go中,创建一个Newserver返回server指针的结构体 2.正对这个指针结构体实现两个方法 Handler(处理方法&#xff0…

Vue2与Vue3—引入DataV

一、文档参考 vue2使用DataV文档 vue3使用DataV文档 二、开始 1、npm安装DateV 支持npm、pnpm、yarn V2: npm install jiaminghi/data-viewV3: npm install kjgl77/datav-vue32、全局引入DataV // main.ts中全局引入 v2: import dataV from jiaminghi/…

nginx+flask+uwsgi部署遇到的坑

文章目录 1.环境:2.uwsgi_conf.ini具体配置内容3.nginx 具体配置4.具体命令(注意使用pip3命令安装)5.服务异常排查 1.环境: centos8 uWSGI 2.0.22 gmssl 3.2.2 nginx version: nginx/1.18.0 项目目录: 2.uwsgi_conf.ini具体配置内容 [uws…

Linux CEF(Chromium Embedded Framework)源码下载编译详细记录

Linux CEF(Chromium Embedded Framework)源码下载编译 背景 由于CEF默认的二进制分发包不支持音视频播放,需要自行编译源码,将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 前置条件 下载的过程非…

Idea小操作

Idea操作 idea提取内容构成一个方法 idea提取内容构成一个方法

git clean 命令

git clean -n //显示要删除的文件,clean的演习,告诉哪些文件删除,只是一个提醒。 git clean -dn //显示要删除的文件和目录 git clean -f //删除未追踪的文件 git clean -dff //删除未追踪的目录 git clean -df //清除所有未跟踪文件&#xf…

【MySQL】聚合函数与分组查询

文章目录 一、聚合函数1.1 count 返回查询到的数据的数量1.2 sum 返回查询到的数据的总和1.3 avg 返回查询到的数据的平均值1.4 max 返回查询到的数据的最大值1.5 min 返回查询到的数据的最小值 二、分组查询group by2.1 导入雇员信息表2.2 找到最高薪资和员工平均薪资2.3 显示…

小型双轮差速底盘机器人实现红外跟随功能

1. 功能说明 本文示例将实现R023样机小型双轮差速底盘跟随人移动的功能。在小型双轮差速底盘前方按下图所示安装3个 近红外传感器,制作一个红外线发射源,实现当红外发射源在机器人的检测范围内任意放置或移动时,机器人能追踪该发射源。 2. 电…

ffmpeg工具实用命令

说明:ffmpeg是一款非常好用的媒体操作工具,包含了许多对于视频、音频的操作,有些视频播放器里面实际上就是使用了ffmpeg。本文介绍ffmpeg的使用以及一些较为实用的命令。 安装 ffmpeg是命令行操作的,不需要安装,可在…

ADSP21569之开发笔记(一)

CLDP烧写SigmStudio融合程序到Flash实现脱机步骤: 1、配置CCES属性,生成ldr文件。 ADI的flash烧写都需要驱动,这个驱动并不是通用的,每一个型号的flash都会有自己对应的驱动,ADI提供了一个例程,即IS25LP512…

CS61B Spring 2021 proj2 gitlet

Gitlet 项目简介整体结构对象概念(object concept)追踪文件(track file)分支管理(branch management)持久化目录结构(folder structure) 命令功能与具体实现initaddcommitrmloggloba…

设计模式之三大类

目录 设计模式分类 创建型模式(Creational Patters) 结构型模式(Structural Patterns) 行为型模式(Behavioral Patterns) 命令模式(The Command Pattern) 适配器模式 Object and Class Adapters 设计模式分类 1.创建型模式(Creational Patters) Fatory Method - 本质&…

直线电机模组在激光切割机上的作用

激光切割机是将从激光器发射出的激光,经光路系统,聚焦成高功率密度的激光束。激光束照射到工件表面,使工件达到熔点或沸点,同时与光束同轴的高压气体将熔化或气化金属吹走。激光切割加工是用不可见的光束代替了传统的机械刀&#…

一起学数据结构(3)——万字解析:链表的概念及单链表的实现

上篇文章介绍了数据结构的一些基本概念,以及顺序表的概念和实现,本文来介绍链表的概念和单链表的实现,在此之前,首先来回顾以下顺序表的特点: 1.顺序表特点回顾: 1. 顺序表是一组地址连续的存储单元依次存…

<STM32>STM32F103ZET6-可调参数定时器1互补PWM输出

<STM32>STM32F103ZET6-可调参数定时器1互补PWM输出 一 基础工程 本例基础工程以正点原子战舰V3开发板配套 库函数 开发例程《实验9 PWM输出实验》; 在此例程基础上进行 定时器1互补PWM输出。 二 代码修改 基于例程,只需修改ma…

Uniapp基于微信小程序以及web端文件、图片下载,带在线文件测试地址

一、效果 传送门 二、UI视图 <scroll-view scroll-x="true" scroll-y="true" :style

第一章-数据结构绪论

第一章-数据结构绪论 数据结构的起源和相关概念 数据结构是一门研究非数值计算的程序设计问题中的操作对象&#xff0c;以及它们之间的关系和操作等相关问题的学科。 程序设计的实质是选择一个好的结构&#xff0c;再设计一种好的算法。 数据&#xff1a;是描述客观事物的符…

Zookeeper与Kafka

Zookeeper与Kafka 一、Zookeeper 概述1.Zookeeper 定义2.Zookeeper 工作机制3.Zookeeper 特点4.Zookeeper 数据结构5.Zookeeper 应用场景6.Zookeeper 选举机制 二、部署 Zookeeper 集群1.准备 3 台服务器做 Zookeeper 集群2.安装 Zookeeper3.拷贝配置好的 Zookeeper 配置文件到…

vue-拦截器

第一步 起步 | Axios 中文文档 | Axios 中文网 安装 npm install axios ​ ​​​​​​ ​ ​ 第二步 ​ ​ 所有的请求都叫http协议 ​ ​ ​ ​ ​ 第三步 ​ 导入后即可使用里面的方法 ​ 任何一个东西都可以导出 ​ ​ 只有一个的时候只需要用defau…

【黑马头条之app端文章搜索ES-MongoDB】

本笔记内容为黑马头条项目的app端文章搜索部分 目录 一、今日内容介绍 1、App端搜索-效果图 2、今日内容 二、搭建ElasticSearch环境 1、拉取镜像 2、创建容器 3、配置中文分词器 ik 4、使用postman测试 三、app端文章搜索 1、需求分析 2、思路分析 3、创建索引和…