SpringBoot 接收參數(shù)的 19 種方式
Spring Boot是一個基于Spring框架的開源應(yīng)用開發(fā)框架,旨在簡化Spring應(yīng)用的搭建和開發(fā)過程,提高開發(fā)效率。在Spring Boot中,接收參數(shù)是開發(fā)過程中非常常見的需求。本文將詳細(xì)介紹SpringBoot接收參數(shù)的19種方式,涵蓋了從簡單到復(fù)雜的各種場景。

1. 直接把請求參數(shù)寫在方法形參中
這種方式適用于請求參數(shù)較少的情況。
@GetMapping("/user")
public String getUser(String name, String phone) {
System.out.println("Name: " + name);
System.out.println("Phone: " + phone);
return "User Info";
}2. 使用@RequestParam注解
當(dāng)參數(shù)需要通過URL的查詢字符串傳遞時,可以使用@RequestParam注解。
@GetMapping("/user")
public String getUser(@RequestParam String name, @RequestParam String phone) {
// 實(shí)現(xiàn)邏輯
return "User Info";
}3. 通過實(shí)體類接收參數(shù)
當(dāng)請求參數(shù)較多時,可以將它們封裝到實(shí)體類中。
@PostMapping("/user")
public String createUser(User user) {
// 使用user對象
return "User Created";
}4. 使用HttpServletRequest接收參數(shù)
通過Servlet API直接獲取請求參數(shù)。
@GetMapping("/user")
public String getUser(HttpServletRequest request) {
String name = request.getParameter("name");
String phone = request.getParameter("phone");
// 實(shí)現(xiàn)邏輯
return "User Info";
}5. 使用@PathVariable注解接收REST風(fēng)格路徑參數(shù)
用于處理URL路徑中的變量。
@GetMapping("/user/{id}")
public String getUserById(@PathVariable String id) {
// 實(shí)現(xiàn)邏輯
return "User ID: " + id;
}6. 使用@ModelAttribute注解接收表單數(shù)據(jù)
主要用于表單提交,將請求參數(shù)綁定到對象上。
@PostMapping("/user")
public String updateUser(@ModelAttribute User user) {
// 使用user對象
retu7. 使用@RequestBody注解接收J(rèn)SON請求體
適用于POST請求,請求體為JSON格式。
@PostMapping("/user")
public String createUser(@RequestBody User user) {
// 使用user對象
return "User Created";
}8. 接收數(shù)組參數(shù)
@GetMapping("/users")
public String getUsers(@RequestParam String[] names) {
// 處理names數(shù)組
return "User Names";
}9. 接收集合參數(shù)
使用@RequestParam注解綁定集合參數(shù)。
@GetMapping("/users")
public String getUsers(@RequestParam List<String> names) {
// 處理names列表
return "User Names";
}10. 使用@RequestHeader注解獲取HTTP請求頭信息
@GetMapping("/user")
public String getUser(@RequestHeader("User-Agent") String userAgent) {
return "User Agent: " + userAgent;
}11. 使用@CookieValue注解獲取Cookie值
@GetMapping("/user")
public String getUser(@CookieValue(value = "sessionID", defaultValue = "default") String sessionId) {
return "Session ID: " + sessionId;
}12. 使用@SessionAttribute注解獲取會話屬性
@GetMapping("/user")
public String getUser(@SessionAttribute("user") User user) {
return "User Name: " + user.getName();
}13. 使用@MatrixVariable注解獲取路徑中的矩陣變量
@GetMapping("/photos/{photoId}/comments/{commentId}")
public String getComment(@PathVariable String photoId, @PathVariable String commentId, @MatrixVariable(pathVar = "commentId") String tags) {
// 處理tags
return "Comment Info";
}14. 使用MultiValueMap和Map處理表單提交的參數(shù)
@PostMapping("/users")
public String createUsers(@RequestParam MultiValueMap<String, String> params) {
// 處理params
return "Users Created";
}
@GetMapping("/users")
public String getUsers(@RequestParam Map<String, String> params) {
// 處理params
return "Users Info";
}15. 使用@RequestPart處理multipart/form-data請求
@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file) {
// 處理文件上傳
return "File Uploaded";
}16. 自定義參數(shù)解析器HandlerMethodArgumentResolver
通過實(shí)現(xiàn)HandlerMethodArgumentResolver接口來自定義參數(shù)解析邏輯。
17. 使用@RequestParam Map接收所有查詢參數(shù)
@GetMapping("/user")
public String getUser(@RequestParam Map<String, String> allParams) {
// 處理allParams
return "All Params";
}18. 使用@PathVariable Map接收所有路徑變量
@GetMapping("/users/{ids}")
public String getUsers(@PathVariable Map<String, String> pathVars) {
// 處理pathVars
return "Path Variables";
}19. 利用Spring Boot的自動配置和環(huán)境屬性
Spring Boot提供了自動配置和環(huán)境屬性功能,可以在application.properties或application.yml中配置默認(rèn)參數(shù),并在運(yùn)行時通過@Value注解獲取。
@Component
public class MyComponent {
@Value("${my.custom.property}")
private String customProperty;
// 使用customProperty
}以上就是在Spring Boot中接收參數(shù)的19種方式。每種方式都有其適用場景和注意事項,開發(fā)者應(yīng)根據(jù)具體需求選擇最合適的方法。掌握這些接收參數(shù)的方式,將大大提升Spring Boot應(yīng)用的開發(fā)效率和靈活性。





























