SpringMvc之参数绑定注解详解之二
2 consumes、produces 示例
cousumes的样例:
1 @Controller
2 @RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")
3 public void addPet(@RequestBody Pet pet, Model model) {
4 // implementation omitted
5 }
方法仅处理request Content-Type为“application/json”类型的请求。
produces的样例:
1 @Controller
2 @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")
3 @ResponseBody
4 public Pet getPet(@PathVariable String petId, Model model) {
5 // implementation omitted
6 }
方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;
3 params、headers 示例
params的样例:
1 @Controller
2 @RequestMapping("/owners/{ownerId}")
3 public class RelativePathUriTemplateController {
4
5 @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")
6 public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
7 // implementation omitted
8 }
9 }
仅处理请求中包含了名为“myParam”,值为“myValue”的请求;
headers的样例:
1 @Controller
2 @RequestMapping("/owners/{ownerId}")
3 public class RelativePathUriTemplateController {
4
5 @RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")
6 public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
7 // implementation omitted
8 }
9 }
仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.ifeng.com/
”的请求;
简介:
handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型)
A、处理requet uri 部分(这里指uri template中variable,不含queryString部分)的注解: @PathVariable;
B、处理request header部分的注解: @RequestHeader, @CookieValue;
C、处理request body部分的注解:@RequestParam, @RequestBody;
D、处理attribute类型是注解: @SessionAttributes, @ModelAttribute;
1、 @PathVariable
当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
示例代码:
- @Controller
- @RequestMapping("/owners/{ownerId}")
- public class RelativePathUriTemplateController {
- @RequestMapping("/pets/{petId}")
- public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
- // implementation omitted
- }
- }
上面代码把URI template 中变量 ownerId的值和petId的值,绑定到方法的参数上。若方法参数名称和需要绑定的uri template中变量名称不一致,需要在@PathVariable("name")指定uri template中的名称。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧