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

1. 直接把請(qǐng)求參數(shù)寫(xiě)在方法形參中
這種方式適用于請(qǐng)求參數(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ù)需要通過(guò)URL的查詢字符串傳遞時(shí),可以使用@RequestParam注解。
@GetMapping("/user")
public String getUser(@RequestParam String name, @RequestParam String phone) {
// 實(shí)現(xiàn)邏輯
return "User Info";
}3. 通過(guò)實(shí)體類接收參數(shù)
當(dāng)請(qǐng)求參數(shù)較多時(shí),可以將它們封裝到實(shí)體類中。
@PostMapping("/user")
public String createUser(User user) {
// 使用user對(duì)象
return "User Created";
}4. 使用HttpServletRequest接收參數(shù)
通過(guò)Servlet API直接獲取請(qǐng)求參數(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ù)
主要用于表單提交,將請(qǐng)求參數(shù)綁定到對(duì)象上。
@PostMapping("/user")
public String updateUser(@ModelAttribute User user) {
// 使用user對(duì)象
retu7. 使用@RequestBody注解接收J(rèn)SON請(qǐng)求體
適用于POST請(qǐng)求,請(qǐng)求體為JSON格式。
@PostMapping("/user")
public String createUser(@RequestBody User user) {
// 使用user對(duì)象
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請(qǐng)求頭信息
@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注解獲取會(huì)話屬性
@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請(qǐng)求
@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file) {
// 處理文件上傳
return "File Uploaded";
}16. 自定義參數(shù)解析器HandlerMethodArgumentResolver
通過(guò)實(shí)現(xiàn)HandlerMethodArgumentResolver接口來(lái)自定義參數(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的自動(dòng)配置和環(huán)境屬性
Spring Boot提供了自動(dòng)配置和環(huán)境屬性功能,可以在application.properties或application.yml中配置默認(rèn)參數(shù),并在運(yùn)行時(shí)通過(guò)@Value注解獲取。
@Component
public class MyComponent {
@Value("${my.custom.property}")
private String customProperty;
// 使用customProperty
}以上就是在Spring Boot中接收參數(shù)的19種方式。每種方式都有其適用場(chǎng)景和注意事項(xiàng),開(kāi)發(fā)者應(yīng)根據(jù)具體需求選擇最合適的方法。掌握這些接收參數(shù)的方式,將大大提升Spring Boot應(yīng)用的開(kāi)發(fā)效率和靈活性。




























