SpringBoot Controller接收参数的几种常用方式盘点如下:
一、请求路径参数
1.@PathVariable
适用于url包含请求参数的情况,例如:/common-bsp/bsp/organ/{struIds}
,后台接收示例:
@DeleteMapping("/{struIds}")
public ResponseResult deleteOrgan(@PathVariable String struIds) {
return service.deleteOrgan(struIds);
}
2.@RequestParam
适用于Get请求,将参数放置于请求地址后面的情况,例如:userEdit.html?operaType=add
,后台接收:
@GetMapping(value = "/struExtAndOrgan")
public ResponseResult getStruExtAndOrgan(@RequestParam HashMap<String, Object> parameters) {
return pubStruExtService.getStruExtAndOrgan(parameters);
}
3.@ModelAttribute
适用于从Form表单或URL参数中获取(实际上,不用此注解也能拿到pubOrgan对象)。
@GetMapping("/organs")
public ResponseResult queryOrgans(@ModelAttribute PubOrgan pubOrgan) {
ResponseResult responseResult = new ResponseResult(service.select(pubOrgan));
return responseResult;
}
更多@ModelAttribute
注解用法参考:全面解析Spring中@ModelAttribute注解的用法。
二、Body参数
1.@RequestBody
@PostMapping
public ResponseResult addNextLevel(@RequestBody PubOrgan pubOrgan) {
return service.addNextLevel(pubOrgan);
}
类似的也可以像下面这样:
@PostMapping
public ResponseResult addNextLevel(@RequestBody HashMap<String, Object> parameters) {
return service.addNextLevel(parameters);
}
2.无注解
@PostMapping
public ResponseResult addNextLevel(PubOrgan pubOrgan) {
return service.addNextLevel(pubOrgan);
}
三、请求头参数以及Cookie的获取
需要借助@RequestHeader
和@CookieValue
注解:
@GetMapping("/demo3")
public void demo3(@RequestHeader(name = "myHeader") String myHeader,
@CookieValue(name = "myCookie") String myCookie) {
System.out.println("myHeader=" + myHeader);
System.out.println("myCookie=" + myCookie);
}
或者
@GetMapping("/demo3")
public void demo3(HttpServletRequest request) {
System.out.println(request.getHeader("myHeader"));
for (Cookie cookie : request.getCookies()) {
if ("myCookie".equals(cookie.getName())) {
System.out.println(cookie.getValue());
}
}
}
References