本文不再更新,可能存在內容過時的情況,實時更新請移步我的新博客:SpringBoot Controller接收參數的幾種方式盤點;
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());
}
}
}
本文不再更新,可能存在內容過時的情況,實時更新請移步我的新博客:SpringBoot Controller接收參數的幾種方式盤點;