文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot 接收参数的 19 种方式

2024-11-29 19:28

关注

1. 直接把请求参数写在方法形参中

这种方式适用于请求参数较少的情况。

@GetMapping("/user")
public String getUser(String name, String phone) {
    System.out.println("Name: " + name);
    System.out.println("Phone: " + phone);
    return "User Info";
}

2. 使用@RequestParam注解

当参数需要通过URL的查询字符串传递时,可以使用@RequestParam注解。

@GetMapping("/user")
public String getUser(@RequestParam String name, @RequestParam String phone) {
    // 实现逻辑
    return "User Info";
}

3. 通过实体类接收参数

当请求参数较多时,可以将它们封装到实体类中。

@PostMapping("/user")
public String createUser(User user) {
    // 使用user对象
    return "User Created";
}

4. 使用HttpServletRequest接收参数

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

@GetMapping("/user")
public String getUser(HttpServletRequest request) {
    String name = request.getParameter("name");
    String phone = request.getParameter("phone");
    // 实现逻辑
    return "User Info";
}

5. 使用@PathVariable注解接收REST风格路径参数

用于处理URL路径中的变量。

@GetMapping("/user/{id}")
public String getUserById(@PathVariable String id) {
    // 实现逻辑
    return "User ID: " + id;
}

6. 使用@ModelAttribute注解接收表单数据

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

@PostMapping("/user")
public String updateUser(@ModelAttribute User user) {
    // 使用user对象
    retu

7. 使用@RequestBody注解接收JSON请求体

适用于POST请求,请求体为JSON格式。

@PostMapping("/user")
public String createUser(@RequestBody User user) {
    // 使用user对象
    return "User Created";
}

8. 接收数组参数

@GetMapping("/users")
public String getUsers(@RequestParam String[] names) {
    // 处理names数组
    return "User Names";
}

9. 接收集合参数

使用@RequestParam注解绑定集合参数。

@GetMapping("/users")
public String getUsers(@RequestParam List 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处理表单提交的参数

@PostMapping("/users")
public String createUsers(@RequestParam MultiValueMap params) {
    // 处理params
    return "Users Created";
}

@GetMapping("/users")
public String getUsers(@RequestParam Map params) {
    // 处理params
    return "Users Info";
}

15. 使用@RequestPart处理multipart/form-data请求

@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file) {
    // 处理文件上传
    return "File Uploaded";
}

16. 自定义参数解析器HandlerMethodArgumentResolver

通过实现HandlerMethodArgumentResolver接口来自定义参数解析逻辑。

17. 使用@RequestParam Map接收所有查询参数

@GetMapping("/user")
public String getUser(@RequestParam Map allParams) {
    // 处理allParams
    return "All Params";
}

18. 使用@PathVariable Map接收所有路径变量

@GetMapping("/users/{ids}")
public String getUsers(@PathVariable Map pathVars) {
    // 处理pathVars
    return "Path Variables";
}

19. 利用Spring Boot的自动配置和环境属性

Spring Boot提供了自动配置和环境属性功能,可以在application.properties或application.yml中配置默认参数,并在运行时通过@Value注解获取。

@Component
public class MyComponent {

    @Value("${my.custom.property}")
    private String customProperty;

    // 使用customProperty
}

以上就是在Spring Boot中接收参数的19种方式。每种方式都有其适用场景和注意事项,开发者应根据具体需求选择最合适的方法。掌握这些接收参数的方式,将大大提升Spring Boot应用的开发效率和灵活性。

来源:后端Q内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯