Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header)
目录
1.获取参数
1.1获取单个参数
1.2获取多个参数
传参注意事项:
2.获取对象
3.后端参数重命名@RequestParam
4.获取JSON对象@RequestBody
5.从 URL 地址中获取参数 @PathVariable
6.上传文件 @RequestPart
7.获取Cookie/Session/Header
7.1 获取 Request 和 Response 对象
7.2 获取Cookie
(1)Servlet 获取 Cookie 的方法
(2)使用 @CookieValue 注解实现 Cookie 的读取
7.3 获取Header(请求头)中信息
(1)Servlet 获取 Header 的方法
(2)使用 @RequestHeader 注解实现 Header 的获取
7.4 存储和获取 Session
(1)Session 存储和 Servlet 类似,是使⽤ HttpServletRequest 中获取的
(2)获取 Session 方法1(Servlet 模式)
(3)获取 Seesion 方法2:@SessionAttribute
1.获取参数
1.1获取单个参数
在 Spring MVC 中可以直接用方法中的参数来实现传参:
@GetMapping("/hi") //等于@RequestMapping("/hi")//都能实现映射的功能public String sayHi(String name) {return "Hi:" + name;}

1.2获取多个参数
@GetMapping("/hi") //等于@RequestMapping("/hi")//都能实现映射的功能public String sayHi(String name,Integer v) {return "Hi:" + name + " v:" + v;}

传参注意事项:
在 Spring Boot(Spring MVC) 中传参一定要传包装类型,而非基础类型,否则传一个空的值就会出错, 并且这里的参数一定要和前端传递的参数名保持一致,否则就获取不到参数的值了
2.获取对象
并且Spring MVC可以自动实现参数对象的赋值,比如User对象;
@Data
public class User {private int id;private String name;private int age;//....
}
//普通对象@GetMapping("/show-User")public String showUser(User user){return user.toString();}

3.后端参数重命名@RequestParam
有些特殊情况下,前端传递的参数 key 和我们后端接收的 key 可以不一致,比如前端传递了一个 time 给后端,而后端又是用 createtime 字段来接收的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以使用 @RequestParam 来重命名前后端的参数值
@GetMapping("/show-Time")public String showTime(@RequestParam("t") String startTime,@RequestParam(value = "t2") String endTime){return "开始时间:" + startTime +" 结束时间:" + endTime ;}

注意:
我们观察@RequestParam源码可以看到:

这里代表如果使用@RequestParam的话,前端一定要传递参数,否则就会报错,但是如果我们在代码中加入![]()
就可以不用带参数了
4.获取JSON对象@RequestBody
服务器端实现 JSON 数据的接收需要使用 @RequestBody 注解:
//接收json对象(和第三方系统通讯时常见的场景)@PostMapping("/show-jsonUser")//@RequestBody指定的就是接受一个json对象,需要配合PostMapping来使用public String showJsonUser(@RequestBody User user){return user.toString();}

5.从 URL 地址中获取参数 @PathVariable


6.上传文件 @RequestPart
@RequestMapping("/upfile")public String upfile(@RequestPart("myfile")MultipartFile file) throws IOException {String path = "D:\\Desktop\\img.png";//保存文件file.transferTo(new File(path));return path;}

文件上传我们使用这样的方法的话就存在一个问题:我们传输文件的地址是固定的,当李四传输了文件,张三再传输的时候,李四传输的文件就被覆盖了
7.获取Cookie/Session/Header
7.1 获取 Request 和 Response 对象
@GetMapping("/getparam")//HttpServletRequest req 是spring boot/spring MVC 内置的,不用去传,当其项目启动的时候就直接注入了,不用传,本身就有//HttpServletRespond 同样也内置了public String getParam(HttpServletRequest req){return req.getParameter("username");}
7.2 获取Cookie
(1)Servlet 获取 Cookie 的方法
@RequestMapping("/getck")public String getCookie(HttpServletRequest request){Cookie[] cookies = request.getCookies();for (Cookie item:cookies){log.error(item.getName() + ":" + item.getValue());}return "get Cookie!";}
(2)使用 @CookieValue 注解实现 Cookie 的读取
@RequestMapping("/getck2")public String getCookie2(@CookieValue("awen") String val){return "Cookie value" + val;}
这里我是手动在浏览器中加入Cookie信息的
7.3 获取Header(请求头)中信息
(1)Servlet 获取 Header 的方法
@RequestMapping("/getUa")public String gerUa(@RequestHeader("user-agent") String userAgent){return userAgent;}
(2)使用 @RequestHeader 注解实现 Header 的获取
@RequestMapping("getua2")public String getHead(@RequestHeader("User-Agent")String userAgent) {return "header: " + userAgent;}
7.4 存储和获取 Session
获取session:
和servlet时代存session是一样的,没有注解
存session信息:
(1)Session 存储和 Servlet 类似,是使⽤ HttpServletRequest 中获取的
@RequestMapping("/setsess")//存sessionpublic String setSession(HttpServletRequest request){HttpSession session = request.getSession(true);session.setAttribute("userinfo","userinfo");return "Set Session Succeed";}
(2)获取 Session 方法1(Servlet 模式)
@RequestMapping("/getsess")public String getSession(HttpServletRequest request){HttpSession session = request.getSession(false);//一定要加falseif (session !=null && session.getAttribute("userinfo") != null){return (String) session.getAttribute("userinfo");}else {return "暂无 Session 信息";}}
(3)获取 Seesion 方法2:@SessionAttribute
@RequestMapping("getsess2")//false 表示没有这个session也行public String getSession2(@SessionAttribute(value = "userinfo",required = false)String userinfo){return userinfo;}
我们观测到@SessionAttribute的源码中:

意味着必须要有属性,通常情况下需要添加 required = false ,如果不添加,那么当 session 中不存在此属性的时候程序运行就会报错
相关文章:
Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header)
目录 1.获取参数 1.1获取单个参数 1.2获取多个参数 传参注意事项: 2.获取对象 3.后端参数重命名RequestParam 4.获取JSON对象RequestBody 5.从 URL 地址中获取参数 PathVariable 6.上传文件 RequestPart 7.获取Cookie/Session/Header 7.1 获取 Request 和…...
Langchain 的 Conversation summary memory
Langchain 的 Conversation summary memory 现在让我们看一下使用稍微复杂的内存类型 - ConversationSummaryMemory 。这种类型的记忆会随着时间的推移创建对话的摘要。这对于随着时间的推移压缩对话中的信息非常有用。对话摘要内存对发生的对话进行总结,并将当前摘…...
Safari 查看 http 请求
文章目录 1、开启 Safari 开发菜单2、显示 JavaScript 控制台 1、开启 Safari 开发菜单 Safari 设置中,打开开发菜单选项 *** 选择完成后,Safari 的目录栏就会出现一个 开发 功能。 2、显示 JavaScript 控制台 开启页面后,在开发中选中 显…...
kafka权限控制功能
参考链接: https://www.clougence.com/cc-doc/dataMigrationAndSync/database/privs_for_kafka Kafka需要的权限 | CloudCanal of ClouGence Kafka Topic 权限控制可以通过使用 Apache Kafka 的内置安全特性来实现。这主要涉及到两个方面:认证&#…...
公司内部重要文件如何加密防止泄露?
现如今,是互联网时代,数据安全在互联网时代中的数据安全岌岌可危,企业中,都会拥有终端,终端中每天都要处理文档,文件,表格,产生一系列的数据问题等,这个时候就要先企业中…...
C语言或Java-x型图案
描述 KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。 输入描述 多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。…...
FTP客户端登录报错:Login failed
FTP客户端登录报错:Login failed 是selinux的问题,一般用户无法登录用户主目录 [rootchenshuyi ~]# setsebool -P tftp_home_dir 1...
Linux相关指令(上)
常见指令: 1 pwd:查看用户当前所在目录 以下面的路径为例: 2 ls:对于目录,该命令列出该目录下的所有子目录与文件。 对于文件,将列出文件名以及其他信息 ls-l(or ll):列…...
电压放大器在管道缺陷检测中应用有哪些
管道是一种重要的输送工业介质的设施,广泛应用于石油、化工、水利等领域。然而,由于长期使用和外界环境因素等原因,管道内部常会出现各种缺陷和损伤,如腐蚀、裂纹、磨损等,这些问题如果得不到及时发现和修复࿰…...
NLP(六十二)HuggingFace中的Datasets使用
Datasets库是HuggingFace生态系统中一个重要的数据集库,可用于轻松地访问和共享数据集,这些数据集是关于音频、计算机视觉、以及自然语言处理等领域。Datasets 库可以通过一行来加载一个数据集,并且可以使用 Hugging Face 强大的数据处理方法…...
Windows下基于VSCode搭建C++开发环境(包含整合MinGW64、CMake的详细流程)
最近想写写C,装了VisualStudio 2022,折腾半天。对于一个用惯VSCode的人来说,总感觉IDE太笨重。于是自己网上各种查资料,自己琢磨,搭建了一套Windows下基于VSCode和CMake的C轻量级开发环境。 具体搭建步骤 1. 下载并安…...
springboot+mybatis-plus+vue+element+vant2实现短视频网站,模拟西瓜视频移动端
目录 一、前言 二、管理后台 1.登录 2.登录成功,进入欢迎页 编辑 3.视频分类管理 4. 视频标签管理 5.视频管理 6.评论管理 编辑 7.用户管理 8.字典管理 (类似于后端的枚举) 9.参数管理(富文本录入) 10.管…...
MySQL学习-第二部分
文章目录 MySQL数据库学习1 表1.1 表中的数据类型1.2 表的创建1.3 表的删除1.4 default设置字段默认值1.5 表结构的修改1.5.1 表名的修改1.5.2 字段名的修改1.5.3 修改字段类型1.5.4 添加字段1.5.5 删除字段1.5.6 表的复制 1.6 表的约束1.6.1 什么是约束?1.6.2 not …...
TortoiseGit 入门指南17:使用子模块
如果你想在自己的代码仓库中嵌入其它仓库,这称为引入子模块(Submodule)。使用右键菜单TortoiseGit - Submodules Add 选项,弹出添加子模块对话框,可以将一个外部仓库嵌入到源代码树的专用子目录中。 Repository&#x…...
谷粒商城篇章5 ---- P173-P192 ---- 检索服务【分布式高级篇二】
目录 1 检索服务 1.1 搭建页面环境 1.1.1 引入依赖 1.1.2 将检索页面放到gulimall-search的src/main/resources/templates/目录下 1.1.3 调整搜索页面 1.1.4 将静态资源放到linux的nginx相关映射目录下/root/docker/nginx/html/static/ search/ 1.1.5 SwitchHosts配置域…...
N位分频器的实现
N位分频器的实现 一、 目的 使用verilog实现n位的分频器,可以是偶数,也可以是奇数 二、 原理 FPGA中n位分频器的工作原理可以简要概括为: 分频器的作用是将输入时钟频率分频,输出低于输入时钟频率的时钟信号。n位分频器可以将输入时钟频率分频2^n倍…...
华为OD真题--分苹果-带答案
有A,B两个同学想要分苹果。A的想法是使用二进制进行,1 1相加不进一位,如(9 5 1001 101 12)。B同学的想法是使用十进制进行,并且进一位。会输入两组数据,一组是苹果总数,一组分别…...
【前端实习评审】对小说详情模块更新的后端接口压力流程进行了人群优化
大家好,本篇文章分享一下【校招VIP】免费商业项目“推推”第一期书籍详情模块 前端同学的开发文档周最佳作品。该同学来自安徽科技学院土木工程专业。本项目亮点难点: 1.热门书籍在更新点的访问压力; 2.书籍更新通知的及时性和有效性…...
Factorization Machines(论文笔记)
样例一: 一个简单的例子,train是一个字典,先将train进行“one-hot” coding,然后输入相关特征向量,可以预测相关性。 from pyfm import pylibfm from sklearn.feature_extraction import DictVectorizer import numpy as np tra…...
Qt开发(5)——使用QTimer定时触发槽函数
实现效果 软件启动之后,开始计时,到达预定时间后,调用其他类的某个函数。 类的分工 BaseType:软件初始化的调用类 FuncType: 功能函数所在类 具体函数 // FuncType.h class FuncType: public QObject {Q_OBJECT public: publ…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
