Spring MVC 详解(连接、获取参数、返回数据)
在之前我们先简单那谈谈Spring、SpringBoot以及Spring MVC框架之间有什么关系?
首先Spring是一个框架,SpringBoot脚手架是为了快速开发Spring框架而创造的技术。可以理解为SpringBoot又在Spring上面包了一层壳子,是基于Spring的,是为了让使用Spring更爽,其核心还是Spring。然后,Spring MVC是Spring中的一个Web框架模块,是基于Servlet API构建的。
那MVC又是什么呢?
MVC 是Model View Controller 的首字母缩写,翻译中文就是“模型、视图、控制器”,它是一种设计模式,这种设计模式将软件(项目)分为三部分:模型、视图和控制器。

MVC和 Spring MVC是什么关系?
MVC是一种设计思想,而Spring MVC是一个具体的实现框架。有点类似IoC和DI的关系了,IoC是一种思想,而DI是这种思想的一种具体实现。
Spring MVC是一个基于MVC设计模式和Servlet API实现的Web 项日,同时Spring MVC 又是Spring 框架中的一个WEB模块,它是随着Spring 的诞生而存在的一个框架。Spring 和 Spring MVC诞生的历史是比较久远,在它们之后才有了Spring Boot。
Spring MVC项目如何创建呢?
基于Spring Boot框架添加一个Spring Web(它使用的就是Spring MVC)依赖,此时项目就变成了Spring MVC项目。
本文主要从以下三个方面进行阐述:
1、实现用户和程序的映射(在浏览器输入URL地址之后,能够在程序中匹配到相应方法)。
2、服务器端获取到用户的请求参数。
3、服务器端要将结果返回给用户(前端)。
1、实现用户和程序的映射
方法一:@RequestMapping("/ xxx")

@RequestMapping特征:
1、@RequestMapping 既能修饰类((可选)也能修饰方法。
2、默认情况下@RequestMapping 既支持 POST请求方式,也支持GET请求方式。
@RequestMapping 参数扩展(只支持某种类型的请求方式,比如 POST、GET、PUT等类型的请求方式):

方法2:使用@PostMapping ("/xxx")

方法3:使用@GetMapping("/xxx")

2、服务器端获取到用户的请求参数
1.获取单个参数

2.获取多个参数

3.获取对象


扩展功能:参数重命名
使用@RequestParam注解,当前端传过来的参数名称与我们在后端所写的参数名字不相对应的时候,而且还不能改动前端代码的时候以及后端代码大量使用了这个名称不便修改时,这个时候往往我们可以通过参数重命名的方式来解决。
比如前端传过来的是name,而我们后端大量使用的是username:

@RequestParam注意事项:如果在参数中添加@RequestParam注解,那么前端一定要传递此参数,否则就会报错,如果想要解决此问题,可以给@RequestParam里面添加required = false。

4.接收.JSON格式的数据
使用Postman模拟发送JSON数据给服务器:


5.从URL地址中获取参数(不是从URL地址中的参数部分获取参数)


6.上传文件
在上传文件之前,先讲讲不同运行平台的配置文件设置:
1、新建不同平台的配置文件(不同平台配置文件的命名规则: application-平台.yml(properits)【必须这样命名】)

2、在主配置文件中设置运行的配置文件

3.服务器端代码

4.使用Postman模拟上传文件

这个时候就会在目录下面看到上传的文件了:

7获取Cookie
a) Servlet获取Cookie 的方法


b)使用@Cookievalue注解实现Cookie 的读取


8、获取Header(请求头)里面的信息
a) Servlet获取Header的方法


b)使用@RequestHeader注解实现


9存储和获取Session
存储Session: Servlet和 SpringMVC操作方式是一样的。


获取Session方法1(Servlet 模式):


获取session方式2:@SessionAttribute


3、服务器端要将结果返回给用户(前端)
1.返回一个非静态页面的数据,使用@ResponseBody 注解

@ResponseBody 可以修饰类:表示当前类中所有方法都会返回一个非静态页面的数据;可以修饰方法:表示当前方法返回的是一个非静态页面的数据。否则默认返回的是一个html页面
2.使用@RestController(=Controller+ResponseBody)


3.后端接受JSON数据的标准格式

4.请求重定向和请求转发
请求转发(forward)实现方式1:(请求转发是服务器端帮用户实现的)

请求转发的实现方式2:

请求重定向(redirect)的实现方式1:(重定向的请求发生在客户端(浏览器端))

请求重定向实现方式2:

请求重定向和请求转发有什么区别?
1.定义不同
2.跳转方式不同
3.数据共享不同
4.最终URL地址不同
5.代码实现不同
相关文章:
Spring MVC 详解(连接、获取参数、返回数据)
在之前我们先简单那谈谈Spring、SpringBoot以及Spring MVC框架之间有什么关系?首先Spring是一个框架,SpringBoot脚手架是为了快速开发Spring框架而创造的技术。可以理解为SpringBoot又在Spring上面包了一层壳子,是基于Spring的,是…...
IT女神节(致敬中国IT界永远的女神严蔚敏-数据结构)
我们都知道程序数据结构算法。相信很多人都学过严蔚敏的数据结构的课程。作为一个码农,在这不管是3.7女神节,还是3.8妇女节。我觉得都有必要向这些教育界的老前辈致敬。今天我就梳理梳理,最经典的数据结构教材。 严蔚敏介绍(来自…...
Java 集合分页
一、前言 在Java开发中,若单次展示的数据量太大,会造成程序响应缓慢,就需要用到 分页 功能,每一页展示一定量的数据,分多次展示 ... 那么在List集合中,如何实现 分页 功能呢? 本文将以3种方式&a…...
代码随想录之哈希表(力扣题号)
242. 有效的字母异位词 直接用数组模拟哈希表 只有小写字母,开26的数组就可以了 class Solution {public boolean isAnagram(String s, String t) {//24-28int[] hash new int[26];Arrays.fill(hash,0);for(int i0;i<s.length();i){hash[s.charAt(i)-a];}for(i…...
如何在知行之桥EDI系统中定时自动更换交易伙伴AS2证书?
为了保证客户与交易伙伴之间数据传输的安全性,AS2传输协议中,通常会通过一对数字证书对传输数据进行签名和加密。但是证书是有有效期的,在证书到期之前,需要贸易双方及时更换新的证书。 在更新证书时,由于客户通常是和…...
辽宁千圣文化:抖音店铺怎么做二次优化?
抖音商品卡订单是指永华在抖音、抖音极速版,通过直播的方式出现短视频页面商品卡之后,直接成交商品详情页直接成交后的订单,那么跟着辽宁千圣文化小编来一起看看吧!一.与政策有关1.什么是「商品卡订单」?用户通过抖音、…...
检测js代码中可能导致内存泄漏的工具
JavaScript 中闭包等问题可能导致内存泄漏,因为闭包中引用的变量不会被垃圾回收器自动释放。以下是一些可以用来检测 JavaScript 代码中可能导致内存泄漏的工具: 1、Chrome 开发者工具 Chrome 开发者工具中有一个 Heap Profiler 工具,可以帮…...
linux和centos读写日期到文件并对日期进行比较
#!/bin/bash adate -d "${a}" %s #必须用数字 %s是取时间戳秒数 ddate -d "${c}" %s echo m$(($a - $d)) #必须2个小括号 a1date %s echo $a1 sleep 2 b1date %s echo $(($a1 - $b1)) #必须2个小括号 if [ $a1 -eq $b1 ];then #必须有空格 echo "…...
Espressif-IDE v2.8.0 新增功能及开发方向
在乐鑫最近发布的 Espressif-IDE 2.8.0 版本中,我们推出了分区表编辑器和 NVS 分区编辑器功能,优化现有调试器的配置功能并修复多项 Bug ,进一步为用户提升了插件质量以及稳定性。 用户可以点此获取最新版本。 • 若您的设备为 Windows 系统…...
C++学习笔记之基础
目录前言一.零碎知识点二.C核心2.1.内存分区2.2.引用2.3.函数2.4.类和对象2.4.1.对象的初始化和清理2.4.2.构造函数和析构函数2.4.3.构造函数的分类和调用2.4.4.拷贝构造函数的调用时机2.4.5.深拷贝与浅拷贝2.4.6.初始化列表2.4.7.类对象作为类的成员2.4.8.静态成员2.4.9.C对象…...
博弈论小课堂:零和博弈(找到双方的平衡点)
文章目录 引言I 零和博弈1.1 零和博弈的策略1.2 博弈类型1.3 找到平衡点(equilibrium)II 多人博弈的投篮问题2.1 比赛规则2.2 零和博弈的计算引言 从概率论延伸出来的课题——博弈论,博弈论中最典型的两大类博弈,是“零和博弈”与“非零和博弈”。博弈论所研究的最优化问题…...
Redisson 分布式锁(基于v1.3.1)
Redisson 分布式锁 v1.0.0版本问题 v1.0.0版本的实现在持有锁的JVM或者持有锁的线程挂掉没有释放锁时,该锁不会被释放并且会一直占用,这个时候就使用DEL命令手动删除。 问题解决 v1.3.1版本通过key的ttl解决了这个问题,关键加锁逻辑改为了…...
go并发之美·多个channel合并/多个数据流合并
多个数据流(来自于不同channel)合并为一个流。 一般用于多个相同性质来源的数据进行合并为一处进行统一处理。 目录 背景 实现赖着不走 变个花样:学成出师 背景 最近在重温武侠剧,无意间想到了一些情形然后手痒,想…...
数据库多租户实现三种方式
1960年,许多公司需要使用更多的运算资源,向持有Mainframe的供应商租用运算资源。与此同时,Mainframe的供应商会根据用户登录系统时输入的数据匹配ID,利用ID来计算运算的资源使用量,包含CPU,存储器ÿ…...
单协议 2.4GHz CC2651R31T0RGZR/CC2651R31T0RKPR无线MCU 802.15.4,蓝牙5.2
CC2651R31T0RGZR描述:具有 352KB 闪存的 SimpleLink 32 位 Arm Cortex-M4 单协议 2.4GHz 无线 MCU 48-VQFN -40C ~ 105C48QFN(明佳达电子)【介绍】CC2651R3器件是一款单协议 2.4 GHz 无线微控制器 (MCU),支持以下协议:…...
【项目精选】基于struts+hibernate的采购管理系统
点击下载 javaEE采购管理系统 本系统是一个独立的系统,用来解决企业采购信息的管理问题。采用JSP技术构建了一个有效而且实用的企业采购信息管理平台,目的是为高效地完成对企业采购信息的管理。经过 对课题的深入分析,采购系统需实现以下功能…...
在找docker命令和部署?看这一篇文章就够了。
一、docker 常用命令 docker ps -a #查看所有容器 docker images #查看所有images docker search rabbitmq #搜索rabbitmq docker pull rabbitmq #拉去rabbitmq docker run -id --namemy_rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq # 创建一个容器并启动 docker exec -it…...
NTLM协议原理分析
LM Hash 和 NTLM Hashwindows用户的密码以哈希的形式保存在SAM文件中“%SystemRoot%\system32\config\SAM”。域用户的密码以哈希的形式保存在域控的 NTDS.dit 文件中。 密码的哈希值格式如下用域名:uid:LM哈希:NTLM哈希:::由于LM Hash 有安全缺陷,所以Windows Vist…...
SOC计算方法:电流积分+开路电压
最近小猿在学习soc的计算方法,soc的估算方法大致有五种:电流积分法、开路电压法、阻抗法、智能估算法、状态观测器。今天先给大家介绍前两种方法。 什么是SOC 电池的状态(State of Charge,SOC)是电池能够提供的电荷总…...
linux mysql启动报错处理方案
启动命令: systemctl start mysqld 一、关闭selinux setenforce 0 二、...
Claude官方Skills推荐
Claude官方skills仓库提供了17个skills### 创意设计类 (5个) #### 1. algorithmic-art - 算法艺术生成器**一句话简介**:使用 p5.js 创建带种子随机数和参数探索的算法艺术 **触发条件**:代码艺术、生成艺术、算法艺术、流场、粒子系统#### 2. canvas-de…...
实战驱动:告诉快马你的vue项目类型,获取量身定制的环境与示例
最近在做一个Vue 3移动端H5项目时,发现环境配置和基础搭建特别耗时。经过几次实践,我总结出了一套高效的项目初始化方法,今天就来分享这个实战经验。 项目初始化与移动端适配 使用Vue CLI创建项目后,首先要解决的就是移动端适配问…...
基于2026校招数据分析:拥有这几张AI证书的学生,起薪普遍高30%
2026年校招季已近尾声,随着DeepSeek等大模型技术的持续突破与“人工智能”向千行百业的深度渗透,AI人才市场的竞争呈现白热化态势。前程无忧51job发布的《2026届校招市场AI人才需求报告》显示,AI相关岗位校招薪酬中位数已突破2万元/月&#x…...
Windows Defender移除工具终极指南:如何彻底禁用Windows Defender提升系统性能
Windows Defender移除工具终极指南:如何彻底禁用Windows Defender提升系统性能 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://git…...
别再只会调库了!用NumPy和Random手搓一个SMOTE算法,我踩过的坑都在这了
从零实现SMOTE算法:NumPy实战与关键问题解析 理解类别不平衡问题的本质 在数据科学和机器学习领域,我们经常会遇到类别分布严重不均衡的数据集。想象一下,你正在处理一个信用卡欺诈检测项目,正常交易记录可能有数百万条࿰…...
CTP行情接口避坑指南:从‘不合法的登录’到稳定接收tick数据的5个关键步骤
CTP行情接口实战避坑手册:从登录异常到稳定接收tick的深度解决方案 当你在深夜调试CTP行情接口时,突然看到控制台跳出"不合法的登录"错误提示,而距离第二天开盘只剩3小时——这种场景恐怕不少量化开发者都经历过。本文将分享5个关键…...
Dify插件安装全攻略:从在线市场到离线部署的完整实践
1. Dify插件安装前的准备工作 在开始安装Dify插件之前,我们需要先了解几个关键概念。Dify 1.0.0版本之后,所有工具和模型供应商都改为了插件形式,这意味着我们需要掌握插件的安装方法才能充分发挥Dify的功能。插件主要分为五大类:…...
如何高效优化多语言模型:专业部署的完整策略
如何高效优化多语言模型:专业部署的完整策略 【免费下载链接】paraphrase-multilingual-MiniLM-L12-v2 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/paraphrase-multilingual-MiniLM-L12-v2 你是否在部署多语言文本嵌入模型时遭遇过"显存…...
告别用人“开盲盒”|江湖背调定义全生命周期风控范式
企业用人别踩坑!传统单次背调只有入口安检,无法应对员工在职动态风险,漏洞百出江湖背调以“雇前可信、在职可控”,正式定义全生命周期用工风控范式,筑牢从招聘到离职全链路安全屏障!传统背调vs全生命周期风…...
三层交换机vlan间互通配置
SW1(三层交换机)配置# 1. 创建VLAN sysname LSW1 vlan batch 100 200 300# 2. 配置接口并加入VLAN interface GigabitEthernet 0/0/4port link-type accessport default vlan 100stp disable # 关闭生成树 interface GigabitEthernet 0/0/5port link-ty…...
