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

【SpringMVC】Controller的多种方式接收请求参数

在Spring MVC中,控制器方法可以通过多种方式接收请求参数。以下是最常见的参数传递方法:

路径变量(Path Variables):

使用@PathVariable注解从URL路径中获取参数。
示例:对于URL /dishes/{id}:

@GetMapping("/dishes/{id}")
public ResponseEntity<Result> getById(@PathVariable Long id) {
    // 业务逻辑
}

查询参数(Query Parameters):

使用@RequestParam注解处理查询字符串中的参数。
示例:对于URL /dishes?name=salad:

@GetMapping("/dishes")
public ResponseEntity<Result> getByName(@RequestParam String name) {
    // 业务逻辑
}

请求体(Request Body):

使用@RequestBody注解将请求体中的JSON数据转换为Java对象。
示例:

@PostMapping("/dishes")
public ResponseEntity<Result> save(@RequestBody DishDTO dishDTO) {
    // 业务逻辑
}

请求头(Request Headers):

使用@RequestHeader注解获取请求头中的数据。
示例:

@GetMapping("/dishes")
public ResponseEntity<Result> getDishes(@RequestHeader("Authorization") String authToken) {
    // 业务逻辑
}

Cookie值:

使用@CookieValue注解从请求的Cookie中获取特定值。
示例:

@GetMapping("/dishes")
public ResponseEntity<Result> getDishes(@CookieValue("sessionId") String sessionId) {
    // 业务逻辑
}

表单参数(Form Parameters):

类似于处理查询参数,使用@RequestParam来处理表单提交的数据。常用于application/x-www-form-urlencoded编码。
示例:

@PostMapping("/dishes")
public ResponseEntity<Result> handleForm(@RequestParam String name, @RequestParam String description) {
    // 业务逻辑
}

Model Attribute:

使用@ModelAttribute可以将请求参数绑定到一个Java对象,通常用于表单数据的绑定和数据预填充。
示例:

@PostMapping("/dishes")
public ResponseEntity<Result> createDish(@ModelAttribute DishDTO dishDTO) {
    // 业务逻辑
}

Session Attributes:

使用@SessionAttribute注解从HTTPSession获取数据。
示例:

@GetMapping("/dishes")
public ResponseEntity<Result> getFromSession(@SessionAttribute("user") User user) {
    // 业务逻辑
}

补充

文件上传

@PostMapping("/upload")
public Result<String> upload(MultipartFile file){
 }

在Spring MVC中,处理文件上传时,确实可以不显式地使用@RequestParam注解来绑定MultipartFile参数,只要参数名称与表单上传的字段名称一致。Spring会自动匹配表单字段名称与控制器方法参数名称。

@PostMapping("/upload")
public ResponseEntity<String> upload(@RequestParam("file") MultipartFile file) {
}
http://www.dtcms.com/a/26547.html

相关文章:

  • DeepSeek模型快速部署教程-搭建自己的DeepSeek
  • 在Unity中用简单工厂模式模拟原神中的元素反应
  • DeepSeek服务器繁忙 多种方式继续优雅的使用它
  • MySQL 的存储引擎有哪些?它们之间有什么区别? MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么区别? MySQL 的索引类型有哪些?
  • 框架篇 - Hearth ArcGIS 框架扩展(DryIoC、Options、Nlog...)
  • XCP协议
  • 【刷题】leetcode
  • var、let、const区别
  • 项目中分库分表的分布式ID如何生成
  • 数据结构与算法-搜索-bfs(floodfill and 最短路):池塘计数,城堡问题,山峰和山谷,迷宫问题,武士分度的牛,抓住那头牛
  • 深入理解 QObject的作用
  • 【JavaEE进阶】#{}和${}
  • 【Pandas】pandas Series reindex_like
  • Casbin 权限管理介绍及在 Go 语言中的使用入门
  • 【AI工具之Deepseek+Kimi一键免费生成PPT】
  • Redis Windows 设置密码
  • 关于人工智能的学习方向应该怎么选择
  • 3.3.1 交易体系构建——参与上涨趋势
  • 解决DeepSeek服务器繁忙问题的实用指南
  • 猿大师办公助手对比其他WebOffice在线编辑Office插件有什么优势
  • 【Flink快速入门-7.Flink 状态管理】
  • c++作业
  • 数据结构-----双向链表
  • Java 大视界 -- 企业数字化转型中的 Java 大数据战略与实践(93)
  • 普通人如何主动适应AI浪潮
  • Dify +deepseek-free-api 实现API对话
  • 机器学习·数据处理
  • 你知道数字电路中的运算器不?
  • 内存泄漏是什么?
  • 【Web前端开发精品课 HTML CSS JavaScript基础教程】第二十五章课后题答案