在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")
    @ResponseBody
    public String search(@RequestParam(name = "query") String searchQuery) {
        // 这里处理查询逻辑
        return "Search results for: " + searchQuery;
    }
}
​

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

非必需参数和默认值

有时候,查询字符串参数并不是必须的。在这种情况下,可以设置 @RequestParamrequired属性为 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;
}
​

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

参数类型转换

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

处理复杂对象

如果需要将查询参数绑定到对象上,可以使用 @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对象的 nameage属性将自动填充为 John30

总结

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

相关推荐
毕设源码-郭学长9 小时前
【开题答辩全过程】以 J2EE在电信行业的应用研究为例,包含答辩的问题和答案
java·java-ee
Aevget9 小时前
「Java EE开发指南」如何用MyEclipse开发Java EE企业应用程序?(二)
java·ide·java-ee·开发·myeclipse
不爱编程的小九九10 小时前
小九源码-springboot048-基于spring boot心理健康服务系统
java·spring boot·后端
龙茶清欢10 小时前
Spring Boot 应用启动组件加载顺序与优先级详解
java·spring boot·后端·微服务
青云交10 小时前
Java 大视界 -- Java 大数据在智能公交调度优化与准点率提升中的应用实践(416)
java·动态规划·flink cep·spark mllib·智能公交调度·杭州公交案例·准点率提升
RainbowSea10 小时前
4. ChatClient 的初始,快速使用上手
java·spring·ai编程
RainbowSea10 小时前
3. Ollama 安装,流式输出,多模态,思考模型
java·spring·ai编程
沧澜sincerely11 小时前
Redis 键空间 & 五大类型
java·redis·docker
2351611 小时前
【LeetCode】3. 无重复字符的最长子串
java·后端·算法·leetcode·职场和发展
nandao15811 小时前
springBoot 集成Neo4j 实战演示
java·spring boot·neo4j