【SpringBoot Web框架实战教程】03 SpingBoot 获取 http 请求参数
不积跬步,无以至千里;不积小流,无以成江海。大家好,我是闲鹤,微信:xxh_1459,十多年开发、架构经验,先后在华为、迅雷服役过,也在高校从事教学3年;目前已创业了7年多,主要从事物联网/车联网相关领域和业务。喜欢交友、骑行、写毛笔字、弹吉他、折腾硬件和写代码。
导读
这是一系列关于 SpringBoot Web框架实战 的教程,从项目的创建,到一个完整的 web 框架(包括异常处理、拦截器、context 上下文等);从0开始,到一个可以直接运用在生产环境中的web框架。而且所有源码均开源:https://github.com/xiongxianhe/springboot
正文
上一遍《Spring Boot 返回 JSON》 中我们学习了如何从 Spring Boot 返回 json 数据,这篇我们继续讨论,Spring Boot 如何获取 HTTP 传递的参数。
从 HTTP 协议中,我们可知,传递参数的方式有这么几种:
1. 在 uri 中通过拼接查询字符串传递,这是我们常用的 HTTP GET 方式;
2. 在 HTTP 中的 body 中传递,由于 body 中传递数据的大小不限,所以这种方式可以传递多种格式的数据,如:multipart/form-data、application/x-www-form-urlencode、application/json、application/xml、text/plain、text/html 等;这类方式为 HTTP POST 方式。
下面我们讨论几种常用的方式:
方式一:在 controller 类的 action 方法中,把所需要的参数作为 action 方法的参数(get/post)
@RequestMapping("/user/login")public String login(String name, String pwd) {String res = "you input: name:" + name + "; pwd:" + pwd;return res;}
这种方式同时支持这种方式同时支持 get 和 post(仅支持 multipart/form-data、application/x-www-form-urlencode )
方式二:在 controller 类的 action 方法中, 通过 HttpServletRequest 作为 action 方法的参数(get/post)
@RequestMapping("/user/login2")
public String login2(HttpServletRequest request) {String name = request.getParameter("name");String pwd = request.getParameter("pwd");return "you input: name:" + name + "; pwd:" + pwd;
}
这种方式同时支持这种方式同时支持 get 和 post(仅支持 multipart/form-data、application/x-www-form-urlencode )
方式三:在 controller 类的 action 方法中, 通过 bean 作为 action 方法的参数(get/post)
@RequestMapping("/user/login3")
public String login3(User user) {return user.toString();
}
User.java 内容:
package com.jdz.beans;public class User {private Integer uid;private String name;private String pwd;@Overridepublic String toString() {return String.format("uid: %d name: %s pwd:%s", this.uid, this.name, this.pwd);}
}
这种方式同时支持这种方式同时支持 get 和 post(仅支持 multipart/form-data、application/x-www-form-urlencode )
方式四:通过 @PathVariable 获取 uri 路径中的参数(get)
@RequestMapping(value = "/user/login4/{name}/{pwd}", method = RequestMethod.GET)
public String login4(@PathVariable String name, @PathVariable String pwd) {return "you input: name:" + name + "; pwd:" + pwd;
}
请求方式:
http://localhost:8080/user/login4/name-lg4/pwd-lg4
这种方式只适合 get 方法
方式五:通过 @RequestParam 注解(get/post)
@RequestMapping("/user/login5")
public String login5(@RequestParam(value = "name", required = true) String name, @RequestParam("pwd") String pwd) {return "you input: name:" + name + "; pwd:" + pwd;
}
这种方式同时支持这种方式同时支持 get 和 post(仅支持 multipart/form-data、application/x-www-form-urlencode )
方式六:通过 @RequestParam 注解,并用 Map 来接收参数(get/post)
@RequestMapping("/user/login6")
public String login6(@RequestParam Map<String, Object> params) {return "you input: name:" + params.get("name") + "; pwd:" + params.get("pwd");
}
这种方式同时支持这种方式同时支持 get 和 post(仅支持 multipart/form-data、application/x-www-form-urlencode )
方式七:通过 @RequestBody 注解,并用 Map 来接收参数(json)
@RequestMapping("/user/login7")
public String login7(@RequestBody Map<String, Object> params) {return "you input: name:" + params.get("name") + "; pwd:" + params.get("pwd");
}
这种方式适合 application/json ,用于获取 json 格式
其他
在此基础上还有其他的方式,上面主要列举了一些常用的用法,每种用法可以根据实际场景进行选择使用。
源码:https://github.com/xiongxianhe/springboot.git
系列文章
【SpringBoot Web框架实战(开源)】001 使用 pom 方式创建 SpringBoot 第一个项目
【SpringBoot Web框架实战教程(开源)】02 SpringBoot 返回 JSON
近期文章
# 车联网
【自动化运维】不要相信人,把所有的东西都交给机器去处理
从华为无线网络框架说Dispatch服务
百万级物联网框架设计
高并发服务器之泄峰
# 硬件
stm32驱动直流电机实现启动/加速/减速/倒车/停车等功能
stm32 定时器输出比较(OC)与PWM的理解和应用
stm32 定时器中断
相关文章:
【SpringBoot Web框架实战教程】03 SpingBoot 获取 http 请求参数
不积跬步,无以至千里;不积小流,无以成江海。大家好,我是闲鹤,微信:xxh_1459,十多年开发、架构经验,先后在华为、迅雷服役过,也在高校从事教学3年;目前已创业了…...
Mac14.1.2 M1芯片免费读写ntfs硬盘-亲测有效,免费!!!
1. 安装homebrew 打开终端,使用以下命令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 根据提示逐步完成即可,镜像选择我这里都是保持1的选项。 2. 重启终端 安装完成homebrew后,需…...
手写SpringMVC之ApplicationContextListener
什么是Spring MVC? Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称( spring-webmvc ),但它通常被称为“Spring MVC”。 手写…...
Paimon 在汽车之家的业务实践
汽车之家基于Paimon的实践 摘要:本文分享自汽车之家的王刚、范文、李乾⽼师。介绍了汽车之家基于 Paimon 的一些实践,和一些背景。内容主要为以下四部分: 一、背景 二、业务实践 三、paimon 优化实践 四、未来规划 一、背景 在使用Paimon之前…...
2024-06-27 问AI: 介绍一下 LLM building process
文心一言 LLM(Large Language Model,大语言模型)的构建过程是一个复杂且资源密集的任务,涉及多个关键步骤。以下是LLM构建过程的主要阶段,以及每个阶段的一些关键考虑因素: 数据收集与预处理:…...
猫也有自动厕所上了吗?自费分享好用的智能猫砂盆,看完不亏。
还有人在用普通猫砂盘吗?之前我也是用的普通猫砂盘,但我发现只要我在上班时间,我就无法顾忌到小猫的便便,但又不想回家就闻到一股臭味,更何况现在夏天也快到了,便便残留一会就会发酵发臭,导致生…...
《分析模式》漫谈07-怎样把一张图从不严谨改到严谨
DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 下图是《分析模式》原书第2章的图2.10,里面有一些错误和考虑不周的地方: 2004中译本和2020中译本的翻译如下: 基本上都是照搬,没有改过…...
纯干货丨知乎广告投放流程和避坑攻略
精准有效的广告投放企业获客的关键,知乎作为中国最大的知识分享平台,拥有着高质量的用户群体和高度的用户粘性,为广告主提供了独一无二的品牌传播与产品推广平台。然而,如何在知乎上高效、精准地进行广告投放,避免不必…...
mac 安装mysql启动报错 ERROR!The server quit without update PID file
发现问题: mac安装mysql初次启动报错: 一般出现这种问题,大多是文件夹权限,或者以前安装mysql卸载不干净导致。首先需要先确定问题出在哪?根据提示我们可以打开mysql的启动目录,查看启动日志。 问题解决&a…...
TypeScrip环境安装与基础
TS环境安装与基础 文章目录 一、什么是TypeScript(微软开发的)二、TypeScript的特性三、环境安装node安装配置详解(常用:outDir,strict ) 四、注释方式五、数据类型 一、什么是TypeScript(微软开…...
6.27学习总结
一、高数 1、斯托克斯公式(曲线<->曲面):看清顺时针(负)/逆时针(正) 2、曲面方程变二重积分: 前、上、右:正; 后、下、左:负; 3…...
选择第三方软件测试机构做验收测试的好处简析
企事业单位在自行开发完软件系统或委托软件开发公司生产软件之后,有一个必经流程就是验收测试,以验证该产品是否符合用户需求、是否可以上线。为了客观评估所委托生产的软件质量,第三方软件测试机构往往成为企事业单位做验收测试的首选&#…...
【图书推荐】CPython设计与实现“适合所有Python工程师阅读的书籍”
目录 一、图书推荐 |【CPython设计与实现】 1.1、书籍介绍 1.2、内容简介 1.3、适合哪些人阅读 1.4、作者译者简介 1.5、购买链接 一、图书推荐 |【CPython设计与实现】 "深入Python核心,揭秘CPython的设计智慧!📖 对于每一位热衷…...
原创作品—医疗行业软件界面UI、交互设计
在医疗行业大屏UI设计中,首要的是以用户为中心,深入理解医生、护士、管理层等用户群体的具体需求和工作流程。大屏设计应直观展示关键医疗数据、患者信息、设备状态等,确保用户能够迅速、准确地获取所需信息。同时,功能布局应合理…...
[C++深入] --- vector容器浅析
vector是一个封装了动态大小数组的顺序容器,它能够存放各种类型的对象。 可以删除元素、可以插入元素、可以查找元素,做这些工作我们无需管理容器内存。容器内存管理,这种脏活累活全部交由vector管理。了解一下vector的内存管理策略,能够更加充分的利用内存。 1 vector内存…...
用MySQL和navicatpremium做一个项目—(财务管理系统)。
1 ER图缩小的话怕你们看不清,所以截了两张图 2 vsdx绘图结果 3DDL和DML,都有点长分了好多次上传,慢慢看 DDL -- 用户表 CREATE TABLE users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用…...
Jenkins教程-5-gitee自动化测试任务构建
上一小节我们学习了Jenkins构建gitlab自动化测试任务的方法,本小节我们讲解一下gitee自动化测试任务的构建方法。 接下来我们以windows系统为例,讲解一下构建实际自动化测试任务的具体步骤。 安装git和gitee插件 点击进入Jenkins插件管理页面 安装完插…...
CAN-bus总线在冷链运输中的应用
CAN-bus总线在冷链运输中的应用 如图1所示,疫苗冷链是指为保证疫苗从疫苗生产企业到接种单位运转过程中的质量而装备的存储、运输冷藏设施、设备。由于疫苗对温度敏感,从疫苗制造的部门到疫苗使用的现场之间的每一个环节,都可能因温度过高而失效。在储运过程中,一旦温度超…...
Vue 与 React 区别
Vue.js和React是现代Web开发中两种非常流行的前端框架,两者在**核心概念、组件以及生态系统扩展性**等方面存在区别。具体分析如下: 1. **核心概念** - **Vue**:Vue是一个渐进式JavaScript框架,它致力于视图层,易于上手…...
docker+[nginx] 部署nacos2.x 集群
docker+[nginx] 部署nacos2.x 集群 由于机器有限,本文搭建伪集群 准备: nacos1 :192.168.50.9:8848 nacos2:192.168.50.9:8858 nacos3:192.168.50.9:8868 mysql nginx 【可选,见文末】 创建容器共享网络 便于直接使用容器名连接mysql,如果不创建,连接mysql直接使用i…...
Qwen3.5-9B+OpenClaw组合方案:3类高性价比自动化场景实测
Qwen3.5-9BOpenClaw组合方案:3类高性价比自动化场景实测 1. 为什么选择这个组合? 去年夏天,我花了整整两周时间在本地部署各种开源大模型,试图找到一个既能在预算内运行、又能稳定执行自动化任务的方案。经过反复测试࿰…...
基于ZLMediaKit API的Java流媒体服务实战:从配置到核心功能封装
1. ZLMediaKit快速入门与环境搭建 第一次接触ZLMediaKit时,我被它的轻量级和高性能所吸引。作为一款开源的流媒体服务器,它支持RTSP、RTMP、HLS等多种协议,特别适合中小型视频项目的快速部署。记得当时为了测试性能,我在一台2核4G…...
G5080 G6080 G7080 G1810 G2810 ,MG3680,ts3380最新清零软件5B00,5B01,5B02,1700,1701,1702,1704,P07,E08废墨收集器已满
下载地址:链接:https://pan.baidu.com/s/1j7Nwv715wX1JL3qidnGyXA?pwd0000 提取码:0000 常见 佳能打印机 型号: G5080 G6080 G7080 G1810 G2810 G3810 G4810 G1800 G2800 G3800 G4800 G5010 G6010 G7010 G1010 G2010 G3010 G4010 G1000 G2000 G3000 G40…...
线程池核心参数与拒绝策略深度解析
前言 线程池是Java并发编程中最常用的工具之一,但很多开发者只停留在“会用”层面。面试中,面试官往往通过线程池考察你对并发编程的理解深度——参数如何设置?为什么这样设置?拒绝策略如何选择? 本文将深入剖析线程池…...
C12832 LCD嵌入式驱动库详解:mbed平台128×32点阵显示开发指南
1. C12832 LCD驱动库概述C12832_lcd 是专为 mbed 应用开发板(Application Board)板载液晶显示屏设计的嵌入式驱动库。该显示屏型号为 C12832,是一款 12832 点阵、单色、COG(Chip-on-Glass)结构的 STN 液晶模块…...
新版药典解读:生物制品生产用动物细胞基质的质量控制修订重点
2025年版《中国药典》已正式实施2个多月,其对生物制品生产用动物细胞基质的质量控制要求进行了重要修订。本次修订对生物制品生产企业和检测机构的影响路径和深度虽有差异,但都指向一个核心转变:从“遵循规定”到“证明科学性”。接下来&…...
37 Python 时序和文本:词袋模型 BoW 和 TF-IDF 到底怎么理解?
Python 文本分析入门:词袋模型 BoW 和 TF-IDF 到底怎么理解? 上一篇主要解决了两个基础问题: 为什么中文文本通常要先分词?为什么分词之后还要做停用词过滤? 但文本清洗完成之后,新的问题很快就会出现&…...
MediaPipe Holistic实战效果:一张照片生成全身骨骼图,效果超乎想象
MediaPipe Holistic实战效果:一张照片生成全身骨骼图,效果超乎想象 1. 引言:当AI遇见全身感知 想象一下,你只需要上传一张普通的全身照片,AI就能自动识别出你的面部表情、手势动作和身体姿态,并生成一张精…...
AutoSar标准文档下载全攻略:从官网入口到模块选择(附命名规则解析)
AutoSar标准文档高效获取与深度解析指南 引言 在汽车电子系统开发领域,AutoSar标准已经成为行业公认的架构规范。无论是ECU开发工程师、系统架构师还是测试验证人员,都需要频繁查阅AutoSar官方文档。然而,面对庞大的文档体系和复杂的命名规则…...
Ollama + DeepSeek + 芋道框架 + SearXNG 本地联网搜索完整教程
1. 环境准备与检查 在开始之前,请确保你的环境满足以下条件: 1.1 硬件要求 内存:建议至少8GB可用内存(运行7B模型需要约4-6GB) 硬盘:DeepSeek模型文件约4-5GB空间 CPU/GPU:如有NVIDIA GPU可加速推理(可选) 1.2 软件要求 操作系统:Windows 10/11、macOS、Linux均可 …...
