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

在Spring MVC中使用查询字符串与参数

在Spring MVC中,控制器通过特定的路径进行访问,而查询字符串参数的使用则允许传递额外信息给服务器。这些参数通常用于过滤结果、指导资源的特定呈现或其它各种用途。

获取查询字符串参数

为了让Spring MVC控制器处理查询字符串,可以使用 @RequestParam注解。这个注解将HTTP请求中的查询参数绑定到控制器方法的参数上。以下是具体的使用方法:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class QueryStringController {@GetMapping("/search")@ResponseBodypublic String search(@RequestParam(name = "query") String searchQuery) {// 这里处理查询逻辑return "Search results for: " + searchQuery;}
}
​

在上述示例中,当访问路径 /search 并提供一个如 ?query=keyword 的查询字符串时,searchQuery 变量将会自动赋值为请求中的 keyword

非必需参数和默认值

有时候,查询字符串参数并不是必须的。在这种情况下,可以设置 @RequestParam的 required属性为 false以及一个默认值。

@GetMapping("/search")
@ResponseBody
public String searchWithOptionalParam(@RequestParam(name = "query", required = false, defaultValue = "none") String searchQuery
) {return "Search results for: " + searchQuery;
}
​

在这个更新的例子中,即使没有提供 query 参数,方法也将正常执行,并且 searchQuery 将会使用默认值 "none"

多个查询参数

方法也可以设定接收多个查询参数:

@GetMapping("/filter")
@ResponseBody
public String filterResults(@RequestParam String category,@RequestParam(required = false, defaultValue = "0") int page
) {return "Filtered results for category: " + category + " on page " + page;
}
​

在此示例中,两个参数 category和 page都通过查询字符串传递。如果 page参数未被提供,它将使用默认值 0

参数类型转换

Spring MVC会自动将查询参数从String转换到控制器参数的适当类型,只要这样的转换是可能的。例如,如果有一个查询参数应该是整数,只需将控制器方法的参数声明为 int或 Integer即可。

处理复杂对象

如果需要将查询参数绑定到对象上,可以使用 @ModelAttribute注解:

public class UserCriteria {private String name;private int age;// getters and setters
}@GetMapping("/users")
@ResponseBody
public String findUsers(@ModelAttribute UserCriteria criteria) {return "Users found with criteria: Name - " + criteria.getName() + ", age - " + criteria.getAge();
}
​

当用户访问 /users?name=John&age=30时,UserCriteria对象的 name和 age属性将自动填充为 John和 30

总结

利用Spring MVC中 @RequestParam与 @ModelAttribute的使用,可以方便地处理HTTP请求中的查询字符串参数。不论是简单的数值或字符串,还是复杂的对象绑定,Spring MVC提供了灵活和强大的方式来解析查询参数,从而简化了数据传递和接口交互的设计。


文章转载自:

http://Tl7wwKVe.sqmLw.cn
http://gTnPYTqL.sqmLw.cn
http://CGMgNPxR.sqmLw.cn
http://6EvkcfPA.sqmLw.cn
http://7KX4akLR.sqmLw.cn
http://Vb8jsveh.sqmLw.cn
http://GdsvHQVV.sqmLw.cn
http://hw3fbQiM.sqmLw.cn
http://CHUFRcHE.sqmLw.cn
http://tr3boyZ0.sqmLw.cn
http://aEDZcVmF.sqmLw.cn
http://y9eRzlUO.sqmLw.cn
http://QixmUllY.sqmLw.cn
http://BydNlESz.sqmLw.cn
http://6ZiBg26M.sqmLw.cn
http://MkuiVnYL.sqmLw.cn
http://G739CQDI.sqmLw.cn
http://AkvlGJdT.sqmLw.cn
http://3941k0E6.sqmLw.cn
http://8leT2lH7.sqmLw.cn
http://7Dk2XIpJ.sqmLw.cn
http://DzkY783R.sqmLw.cn
http://dSHuTbj0.sqmLw.cn
http://F2lo4tb8.sqmLw.cn
http://VDBJQtwl.sqmLw.cn
http://aR58xyGt.sqmLw.cn
http://CssdmWzV.sqmLw.cn
http://iwActTSg.sqmLw.cn
http://oMjcGRlE.sqmLw.cn
http://UOcnIngt.sqmLw.cn
http://www.dtcms.com/a/367594.html

相关文章:

  • Unity中,软遮罩SoftMaskForUGUI的使用
  • Websocket的Key多少个字节
  • 手写Java泛型,彻底掌握它!
  • Redlock:为什么你的 Redis 分布式锁需要不止一个节点?
  • leetcode 1419 数青蛙
  • 蔚来汽车前制动器设计及热性能分析cad+三维图+设计说明书
  • 唯品会获得vip商品详情 API 返回值说明
  • Java对接Kafka的三国演义:三大主流客户端全景评测
  • 2020年_408统考_数据结构41题
  • 简单例子实现 字符串搜索替换
  • Python/JS/Go/Java同步学习(第三篇)四语言“切片“对照表: 财务“小南“纸切片术切凭证到崩溃(附源码/截图/参数表/避坑指南/老板沉默术)
  • 【IO】共享内存、信息量集
  • CmakeLists.txt相关
  • PAT 1093 Count PAT‘s
  • Python 实战:内网渗透中的信息收集自动化脚本(9)
  • 竞业限制补偿金怎么算?一次性支付要交税吗?人事系统帮你理清这些坑!
  • 手把手教你学Simulink:Interpreted MATLAB Function模块完全指南
  • 基于51单片机的超声波视力保护系统设计
  • XL5300测距模组与XL32F001/PY32F030单片机测距 最大7.6M距离测量
  • 【问题记录】Anaconda的jupyter NoteBook点击launch的时候,弹出的页面提示ERR_FILE_NOT_FOUND
  • vector 题目练习 算法代码分析 代码实现
  • 每日工作计划管理工具:核心功能详解
  • Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十六天
  • 【VLMs篇】05: MiniCPM-V 4.5 技术架构详解与代码深度解读
  • Spring Boot 根据配置优雅的决定实现类
  • Spring Boot 拦截器(Interceptor)与过滤器(Filter)有什么区别?
  • 揭秘“强关联”世界的隐形力量:科学家首次实现对复杂材料的“化学级”精确模拟
  • 个股场外期权行权期限有哪些规定?
  • fpga iic协议
  • 关于嵌入式学习——嵌入式硬件3