当前位置: 首页 > news >正文

Controller中获取URI的属性的标签/类

一、核心注解 / 类详解(按使用频率排序)

1. @RequestParam(最常用)

作用

接收URL 请求参数(即 URL 中?后面的键值对,如http://localhost:8080/user?userId=123&name=张三)。

核心用法
@GetMapping("/user") // 基础用法:接收userId参数,参数名和方法参数名一致 public String getUser(@RequestParam Long userId) { return "用户ID:" + userId; } // 进阶用法:指定参数名、设置默认值、非必传 public String getUser( @RequestParam(value = "uid", required = false, defaultValue = "0") Long userId, @RequestParam String name // 省略value,默认匹配参数名name ) { return "用户ID:" + userId + ",姓名:" + name; }
关键特点
  • 必传性:默认required = true,前端不传该参数会报 400 错误;
  • 适配场景:GET 请求(URL 参数)、POST 请求(表单提交的参数)都能接收。

2. @PathVariable(路径参数)

作用

接收URL 路径中的动态参数(即 URL 中{}占位符的内容,如http://localhost:8080/user/123)。

核心用法
@GetMapping("/user/{userId}/{name}") public String getUser( @PathVariable Long userId, // 匹配路径中的{userId} @PathVariable("name") String userName // 路径名和参数名不一致时指定value ) { return "用户ID:" + userId + ",姓名:" + userName; }
关键特点
  • 路径绑定:参数必须和 URL 中{}的名称对应,不传则报 404;
  • 适配场景:RESTful 风格接口(如/user/123代替/user?userId=123)。

3. @Param(MyBatis 注解,非 Controller 参数)

⚠️ 注意:这个注解不是 Controller 接收前端参数的,是 MyBatis 中给 Mapper 接口方法参数命名的,很多人会混淆!

作用

给 MyBatis Mapper 接口的方法参数起别名,方便 XML / 注解中引用参数。

核心用法
// Mapper接口(非Controller) public interface UserMapper { // 用@Param给参数命名,XML中可通过#{userId}引用 User getUser(@Param("userId") Long id); } // 对应的MyBatis XML <select id="getUser" resultType="User"> SELECT * FROM user WHERE id = #{userId} </select>

4. HttpServletRequest(原生请求对象)

作用

Java EE 原生的请求对象,是所有 Spring 注解参数接收的 “底层实现”,可手动解析所有请求参数。

核心用法
@GetMapping("/user") public String getUser(HttpServletRequest request) { // 解析URL参数 String userId = request.getParameter("userId"); String name = request.getParameter("name"); // 还能获取请求头、Cookie、请求方法等 String token = request.getHeader("token"); return "用户ID:" + userId + ",姓名:" + name + ",Token:" + token; }
关键特点
  • 万能但繁琐:能获取所有请求相关数据,但需要手动类型转换(如 String 转 Long);
  • 适配场景:特殊需求(如批量解析参数、自定义参数处理)。

二、补充:其他常用参数接收注解

1. @RequestBody

接收JSON 格式的请求体(POST/PUT 请求中,请求体为JSON 字符串),是前后端分离的核心注解:

@PostMapping("/user") public String addUser(@RequestBody User user) { // 前端传{"userId":123,"name":"张三"},自动映射到User对象 return "新增用户:" + user.getName(); }

2. @RequestHeader

接收HTTP 请求头中的参数(如 Token、Content-Type 等):

public String getUser(@RequestHeader("token") String token) { return "请求头Token:" + token; }

3. @CookieValue

接收Cookie 中的参数

public String getUser(@CookieValue("sessionId") String sessionId) { return "Cookie中的SessionID:" + sessionId; }

三、核心区别与使用场景总结

注解 / 类接收参数位置核心使用场景
@RequestParamURL 后缀(?key=value)简单参数、表单提交
@PathVariableURL 路径(/user/{id})RESTful 风格接口
@ParamMyBatis Mapper 参数命名数据库查询参数引用
HttpServletRequest万能解析(参数 / 头 / Cookie)自定义参数处理、特殊需求
@RequestBody请求体(JSON 字符串)前后端分离、复杂对象传输
http://www.jsqmd.com/news/424819/

相关文章:

  • 2月必知!2026口碑好的回收酒精源头厂家推荐榜单,回收废乙醇/酒精/回收废酒精/食用酒精,回收酒精供应商哪家好 - 品牌推荐师
  • STM32多路超声波采集系统设计与实现
  • FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
  • 【CTFshow-pwn系列】03_栈溢出【pwn 054】详解:基于连续内存布局的信息泄露漏洞分析
  • 【CTFshow-pwn系列】03_栈溢出【pwn 055】详解:多级函数链式调用与精准栈布局
  • 2026市面上口碑佳的穿墙螺丝厂家怎么选?这些厂家别错过,脚手架/止水钢板/钢支撑,穿墙螺丝生产厂家口碑排行 - 品牌推荐师
  • 2026年,为你揭晓性价比高的宠物医院运营托管公司,宠物医院美团运营/宠物医生代运营,宠物医院运营托管公司推荐排行榜 - 品牌推荐师
  • ⑤python基础课-A+B大综合
  • 2026年最新|Server 2022/2025/23H2 官方原版ISO版本号汇总,运维必看!
  • RPA与测试融合:业务流程自动化中的异常路径覆盖技术
  • 微网两阶段鲁棒优化Matlab实现之旅
  • Java基于springboot+vue的校园跑腿接单系统
  • 语音交互测试自动化:多方言识别的边界用例生成模型
  • 前沿技术融合:AR/VR与边缘计算测试的扩展策略
  • DevOps质量门禁的智能化升级:AIOps与质量分析平台的融合实践
  • PMP续证提示找不到证书如何解决
  • What’s the Difference Between fdisk and parted
  • 基于边缘计算的IoT设备分布式测试框架设计与实现
  • Disk Partitioning in Linux: fdisk, parted, and mkfs Guide
  • 项目管理工具软件
  • 云原生测试范式重构:性能与安全的融合挑战
  • ‌AI生成测试用例:基于LLM的需求歧义自动挖掘技术‌
  • AI测试必知:测试工程师如何选择大模型?
  • DoWhile循环
  • 测试脚本自愈系统:运行时异常的模式识别与动态修复
  • ROS2-通信机制2-01:分布式
  • P4564题解
  • 【开题答辩全过程】以 基于SSM的乡宁县星光影院电影购票微信小程序为例,包含答辩的问题和答案
  • 【开题答辩全过程】以 红色教育网站为例,包含答辩的问题和答案
  • Jenkins如何指定工作目录