【JavaEESpring】Spring Web MVC⼊⻔
Spring Web MVC
- 1. 什么是 Spring Web MVC
- 1.1 什么是 MVC ?
- 1.2 是什么 Spring MVC?
- 2. 学习 Spring MVC
- 2.1 建立连接
- 2.2 请求
- 2.3 响应
- 3. 相关代码链接
1. 什么是 Spring Web MVC
官⽅对于 Spring MVC 的描述是这样的:

1.1 什么是 MVC ?
- MVC 是 Model View Controller 的缩写
- 它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分

- View(视图) 指在应用程序中专门用来与浏览器进行交互, 展示数据的资源
- Model(模型) 是应用程序的主体部分, 用来处理程序中数据逻辑的部分
- Controller(控制器) 可以理解为一个分发器, 用来决定对于视图发来的请求, 需要用哪一个模型来处理, 以及处理完成后需要跳到哪一个视图; 即用来连接视图和模型
1.2 是什么 Spring MVC?
-
MVC 是⼀种架构设计模式, 也⼀种思想, ⽽ Spring MVC 是对 MVC 思想的具体实现.
-
SpringMVC还是⼀个Web框架.
-
总结来说,Spring MVC 是⼀个实现了 MVC 模式的 Web 框架.
-
Spring web 和SpringBoot的关系
- Spring Boot 可以添加很多依赖, 借助这些依赖实现不同的功能. Spring Boot 通过添加Spring Web MVC框架, 来实现web功能.
-
Spring在实现MVC时, 也结合⾃⾝项⽬的特点, 做了⼀些改变, 相对⽽⾔, 下⾯这个图或许更加合适⼀些.

2. 学习 Spring MVC
主要学习的方面
- 建⽴连接:将⽤⼾(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的 Spring 程序。
- 请求: ⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数, 所以请求这块主要是 获取参数的功能.
- 响应: 执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤⼾, 也就是响应.
2.1 建立连接
- @RequestMapping 来实现 URL 路由映射
- @RestController 指定 Spring 需要扫描的类, 只有被@RestController 修饰的类, Spring 才会在该类中找到对应的 @RequestMapping 修饰的方法
- @RequestMapping 即可修饰类,也可以修饰⽅法当修饰类和⽅法时,访问的地址是类路径 + ⽅法路径
- @RequestMapping 支持各种请求方法
2.2 请求
-
Spring MVC 会根据⽅法的参数名, 找到对应的参数, 赋值给⽅法; 所以请求参数的方法参数只要匹配, 就可以得到对应的值
-
方法的参数都使用对象来接受, 基本类型使用包装类
-
传递对象: Spring MVC 会自动解析并进行赋值; 被赋值的对象需要提供getter和setter方法
-
后端对前端传来的参数名进行重命名
- @RequestParam

- @RequestParam
-
Spring MVC 可以⾃动绑定数组参数的赋值
-
传递集合
- 默认情况下,请求中参数名相同的多个值,是封装到数组. 如果要封装到集合,要使⽤@RequestParam绑定参数关系
-
传递 json
- 接收JSON对象, 需要使⽤ @RequestBody 注解
-
获取URL中参数 @PathVariable


-
上传⽂件@RequestPart

-
获取Cookie/Session
- 使用 Servlet 中的接口
- 注解: @CookieValue

- 通过Spring MVC内置对象HttpSession 来获取
-
获取Header
- @RequestHeader
2.3 响应
@RestController 和 @Controller的联系和区别
- @RestController = @Controller + @ResponseBody
- @Controller : 定义⼀个控制器, Spring 框架启动时加载, 把这个对象交给Spring管理.
- @ResponseBody : 定义返回的数据格式为⾮视图, 返回⼀个 text/html 信息
- 所以@RestController返回的是 text/html , 而@Controller返回的是静态页面
返回 JSON 数据
- 后端⽅法返回结果为对象
3. 相关代码链接
代码获取连接
相关文章:
【JavaEESpring】Spring Web MVC⼊⻔
Spring Web MVC 1. 什么是 Spring Web MVC1.1 什么是 MVC ?1.2 是什么 Spring MVC? 2. 学习 Spring MVC2.1 建立连接2.2 请求2.3 响应 3. 相关代码链接 1. 什么是 Spring Web MVC 官⽅对于 Spring MVC 的描述是这样的: 1.1 什么是 MVC ? MVC 是 Model View C…...
flutter逆向 ACTF native app
前言 算了一下好长时间没打过CTF了,前两天看到ACTF逆向有道flutter逆向题就过来玩玩啦,花了一个下午做完了.说来也巧,我给DASCTF十月赛出的逆向题其中一道也是flutter,不过那题我难度降的相当之低啦,不知道有多少人做出来了呢~ 还原函数名 flutter逆向的一大难点就是不知道l…...
【Redis】set 集合
上一篇:list 列表 https://blog.csdn.net/m0_67930426/article/details/134364315?spm1001.2014.3001.5501 目录 Sadd Smembers Sismember Scard Srem 编辑Srandomember Spop Smove 集合类 Sdiff Sinter Sunion 官网 https://redis.io/commands/?…...
【算法与设计模式】
一、数据结构与算法 1、算法性能评估 时间复杂度、空间复杂度 2、数据结构 数组与列表 队列 堆栈 链表 二叉树 多叉树 递归算法 二、设计模式 1、单例 (1)GIL:线程互斥锁。保证同一时刻只有一个线程在进行。 (2)…...
Javaweb之javascript的小案例的详细解析
1.5.4 案例 1.5.4.1 需求说明 鲁迅说的好,光说不练假把式,光练不说傻把式。所以接下来我们需要通过案例来加强对于上述DOM知识的掌握。需求如下3个: 点亮灯泡 将所有的div标签的标签体内容后面加上:very good 使所有的复选框呈现被选中的…...
Vant 移动端UI 组件自动引入
Vue项目中安装Vant # Vue 3 项目,安装最新版 Vant npm i vant 组件按需引入配置 Vant按需引入- - -安装:unplugin-vue-components 插件 unplugin-vue-components 插件可以在Vue文件中自动引入组件(包括项目自身的组件和各种组件库中的组件&…...
敏捷开发是什么?敏捷开发流程是怎么样的?
1. 什么是敏捷开发? 敏捷开发是一种迭代、增量式的软件开发方法,旨在通过灵活、协作和快速响应变化的方式,提高开发团队的效率和产品的质量。相较于传统的瀑布式开发模型,敏捷开发更加注重用户需求的响应和团队协作࿰…...
【CASS精品教程】cass3d 11.0加载超大影像、三维模型、点云数据
CAD2016+CASS11.0(内置3d)下载与安装: 【CASS精品教程】CAD2016+CASS11.0安装教程(附CASS11.0安装包下载)https://geostorm.blog.csdn.net/article/details/132392530 一、cass11.0 3d支持的数据 cass11.0中的3d模块增加了多种数据的支持,主要有: 1. 三维模型 点击…...
Unity Input System最简单使用
开始学的是 Input Manager 比较好理解,Input System却不好理解,教程也找了很多,感觉都讲的不清楚,我这里做一个最简单的用 Input System 添加鼠标左键和右键的效果。 1. 安装 Input System 包 首先这个功能不是内置的࿰…...
3.前端调式(断点调式)
1. Elements 先来看这张图最上头的一行是一个功能菜单,每一个菜单都有它相应的功能和使用方法,依次从左往右来看 箭头按钮 用于在页面选择一个元素来审查和查看它的相关信息,当我们在Elements这个按钮页面下点击某个Dom元素时,箭…...
拓扑排序软件设计——ToplogicalSort_app(含有源码、需求分析、可行性分析、概要设计、用户使用手册)
拓扑排序软件设计 前言1. 需求分析2. 可行性分析2.1 简介2.2 技术可行性分析2.2.1 技术实现方案2.2.2 开发人员技能要求2.2.3 可行性 2.3 操作可行性分析2.4 结论 3. 项目报告3.1 修订历史记录3.2 软硬件环境3.3 需求分析3.4 详细设计3.4.1 类设计3.4.2 核心流程描述3.4.3 核心…...
ESP32网络开发实例-将数据保存到InfluxDB时序数据库
将数据保存到InfluxDB时序数据库 文章目录 将数据保存到InfluxDB时序数据库1、InfluxDB介绍与安装3、软件准备4、硬件准备5、代码实现6、InfluxDB数据可视化在本文中,将介绍 InfluxDB 以及如何将其与 ESP32 开发板一起使用。 我们将向展示如何创建数据库桶并将 ESP32 数据发送…...
NestJS——基于Node.js 服务器端应用程序的开发框架
文章目录 前言什么是 NestJS? 一、NestJS特性?二、使用步骤Typescript 知识后端开发基本知识新建项目目录结构 前言 Nestjs中文文档 什么是 NestJS? Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用…...
EXCEL中将UTC时间戳转为日期格式(精确到秒)
UTC时间戳的格式通常是一个整数,表示从1970年1月1日00:00:00 UTC到当前时间的总秒数。它可以以秒或毫秒为单位表示。例如,如果当前时间是2023年3月17日 12:34:56 UTC,则对应的UTC时间戳为1679839496(以秒为单位)或1679…...
2023年【起重机械指挥】考试试卷及起重机械指挥操作证考试
题库来源:安全生产模拟考试一点通公众号小程序 2023年起重机械指挥考试试卷为正在备考起重机械指挥操作证的学员准备的理论考试专题,每个月更新的起重机械指挥操作证考试祝您顺利通过起重机械指挥考试。 1、【多选题】《中华人民共和国特种设备安全法》…...
组件的设计原则
目录 插槽的基本概念 基础用法 具名插槽 使用场景 布局控制 嵌套组件 组件的灵活性 高级用法 作用域插槽 总结 前言 Vue 的 slot 是一项强大的特性,用于组件化开发中。它允许父组件向子组件传递内容,使得组件更加灵活和可复用。通过 slot&…...
安卓编译命令mm和mmm的区别(mm编译当前工作目录,mmm可编译指定目录)
文章目录 1. mm示例 2. mmm示例 注意 在Android操作系统的源代码编译过程中, mm和 mmm是两个用于构建部分代码的常用命令。它们都属于Android build system提供的命令集合,但用途略有不同: 1. mm mm(make module)命…...
计算机毕业设计 基于Springboot的影院购票管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
使用.net 构建 Elsa Workflow
对接过蓝凌OA 也基于泛微OA数据库原型重新研发上线过产品,自研的开源的也上线过 每个公司对OA流程引擎介绍 都不一样的, 比如Elsa 这款微软MVP开源组件,基于跨平台开发的技术含量高,专门做OA的同行推过对应文章。 直接看怎么用吧。…...
open clip论文阅读摘要
看下open clip论文 Learning Transferable Visual Models From Natural Language Supervision These results suggest that the aggregate supervision accessible to modern pre-training methods within web-scale collections of text surpasses that of high-quality crowd…...
畜牧检测站综合监测系统设计与实现(有完整资料)
资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T0542309M设计简介:本设计是基于单片机的畜牧检测站综合监测系统设计,主要实现以下功能:通过温湿度传感器检测温湿度 通…...
从Velodyne VLP-16实战出发:手把手教你配置Cartographer实现真实场景3D建图(附避坑参数详解)
从Velodyne VLP-16到高精度3D建图:Cartographer实战进阶指南 当激光雷达点云在屏幕上第一次正确拼接成连贯的走廊轮廓时,那种成就感难以言表。但在此之前,你可能已经经历了无数次rviz黑屏、TF报错和参数调试的煎熬。本文将带你跨越从Cartogr…...
用Python+海康MV-CH120-60UM相机实现条形码识别,从硬件连接到代码调试的完整避坑指南
Python海康MV-CH120-60UM工业相机条形码识别实战:从硬件配置到智能解码的完整解决方案 工业视觉领域的开发者们常常面临一个现实问题:如何快速将硬件设备与软件系统无缝对接?本文将以海康威视MV-CH120-60UM工业相机为例,手把手带你…...
GKD订阅管理终极指南:如何用3步轻松解决订阅混乱难题
GKD订阅管理终极指南:如何用3步轻松解决订阅混乱难题 【免费下载链接】GKD_THS_List GKD第三方订阅收录名单 项目地址: https://gitcode.com/gh_mirrors/gk/GKD_THS_List 你是不是也遇到过这样的场景?打开GKD应用,面对几十个订阅源却不…...
3分钟零门槛安装:Axure RP中文语言包全面解析
3分钟零门槛安装:Axure RP中文语言包全面解析 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界…...
开源中国教育战略升级:构建AI时代全链条人才培养生态
在数字化转型浪潮席卷全球教育的当下,开源中国以一场战略升级宣告其从工具服务商向AI教育基础设施提供者的身份转变。4月8日至10日在北京展览馆举办的第35届北京教育装备展示会上,这家国内领先的开源技术平台展示了其覆盖K12至高等教育的完整解决方案&am…...
iperf3高级玩法:用这些参数组合,精准定位你的网络瓶颈(含TCP/UDP对比测试)
iperf3高级玩法:用参数组合精准定位网络瓶颈 当视频会议频繁卡顿、文件传输速度异常缓慢时,大多数人的第一反应是"网络带宽不够"。但真实情况往往复杂得多——可能是TCP拥塞控制策略不适应高延迟链路,或是UDP流被路由器限速&#x…...
Mac系统下Jmeter压力测试工具从零配置到实战:JDK8安装+汉化+电商压测案例
1. 为什么Mac用户需要Jmeter压力测试 做电商的朋友应该都遇到过这样的场景:大促活动刚开始,页面突然卡死无法下单;秒杀商品刚上架,库存瞬间清零却出现超卖。这些问题往往源于系统在高并发场景下的性能瓶颈。而Jmeter正是解决这类问…...
优酷网页截图黑屏问题解析:探索浏览器图形服务API的幕后机制
1. 优酷网页截图黑屏现象解析 最近有不少用户反馈,在优酷网页观看视频时尝试截图,结果保存的图片却是全黑的。这个问题看似简单,背后却涉及到浏览器图形渲染的复杂机制。作为一名长期研究浏览器底层技术的开发者,我发现这个问题其…...
【AI大模型】RKNN神经网络计算框架从入门到部署
目录 一、RKNN核心基础认知(必学) 1.1 什么是RKNN 1.2 RKNN核心工具链组成 1.3 学习前提(必备基础) 二、环境搭建(分步实操,零踩坑) 2.1 PC端环境搭建(Ubuntu 20.04)…...
