springboot 19种参数接收方式

1. @PathVariable

用来处理URL路径中的参数。

@GetMapping("/user/{id}")
public String getUser(@PathVariable String id) {
    return "User ID: " + id;
}

2. @RequestParam

用于处理URL中的查询参数。

@GetMapping("/user")
public String getUser(@RequestParam String id) {
    return "User ID: " + id;
}

3. @RequestHeader

用于获取HTTP请求头信息。

@GetMapping("/user")
public String getUser(@RequestHeader("User-Agent") String userAgent) {
    return "User Agent: " + userAgent;
}

4. @RequestBody

用来接收客户端发送的JSON或XML等格式的请求体。

@PostMapping("/user")
public String createUser(@RequestBody User user) {
    return "User Name: " + user.getName();
}

5. @ModelAttribute

主要用于表单提交,将请求参数绑定到对象上。

@PostMapping("/user")
public String createUser(@ModelAttribute User user) {
    return "User Name: " + user.getName();
}

6. @RequestAttribute

用于获取在请求期间添加的属性。

@GetMapping("/user")
public String getUser(@RequestAttribute String id) {
    return "User ID: " + id;
}

7. @CookieValue

用来获取请求中的Cookie值。

@GetMapping("/user")
public String getUser(@CookieValue(value = "SessionID", defaultValue = "default") String sessionId) {
    return "Session ID: " + sessionId;
}

8. @SessionAttribute

用于获取会话范围内的属性。

@GetMapping("/user")
public String getUser(@SessionAttribute("user") User user) {
    return "User Name: " + user.getName();
}

9. @MatrixVariable

用于从路径中的矩阵变量获取值。

@GetMapping("/user/{id}")
public String getUser(@PathVariable String id, @MatrixVariable String name) {
    return "User Name: " + name;
}

10. HttpServletRequest

通过Servlet API直接获取请求参数。

@GetMapping("/user")
public String getUser(HttpServletRequest request) {
    String id = request.getParameter("id");
    return "User ID: " + id;
}

11. MultiValueMap & Map

用来处理表单提交的参数。

@PostMapping("/user")
public String createUser(@RequestParam MultiValueMap<String, String> paramMap) {
    return "Parameters: " + paramMap.toString();
}

12. @RequestPart

专门用于获取请求中的multipart部分。

@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file) {
    return "File Name: " + file.getOriginalFilename();
}

13. @RequestParam Map

获取请求中的查询参数,并将其绑定到Map中。

@GetMapping("/user")
public String getUser(@RequestParam Map<String, String> params) {
    return "Parameters: " + params.toString();
}

14. @PathVariable Map

获取路径变量,并将其绑定到Map中。

@GetMapping("/user/{id}/{name}")
public String getUser(@PathVariable Map<String, String> pathVars) {
    return "Path Variables: " + pathVars.toString();
}

15. HandlerMethodArgumentResolver

自定义参数解析器来处理复杂的请求参数。

public class CustomArgumentResolver implements HandlerMethodArgumentResolver {
    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.getParameterType().equals(CustomObject.class);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
        return new CustomObject(webRequest.getParameter("customParam")); 
    }
}

16. @RequestParam List

绑定请求中的多个参数到List。

@GetMapping("/users")
public String getUsers(@RequestParam List<String> ids) {
    return "User IDs: " + ids.toString();
}

17. @RequestParam数组

绑定请求中的多个参数到数组。

@GetMapping("/users")
public String getUsers(@RequestParam String[] ids) {
    return "User IDs: " + Arrays.toString(ids);
}

18. @RequestParam Optional

用Optional来处理可选的请求参数。

@GetMapping("/user")
public String getUser(@RequestParam Optional<String> id) {
    return "User ID: " + id.orElse("default");
}

19. @ModelAttribute用在参数上

获取请求参数,并使用@ModelAttribute注解进行方法参数绑定。

@GetMapping("/search")
public String searchUser(@ModelAttribute("criteria") SearchCriteria criteria) {
    return "Search Criteria: " + criteria.toString();
}

posted on 2024-08-02 09:27  咚..咚  阅读(111)  评论(0编辑  收藏  举报

导航