当前位置:   article > 正文

关于SpringBoot中的参数传递 常用注解 这篇就够了_springboot @param

springboot @param

目录

一、常用注解区别

二、@RequestParam示例

三、@RequestBody示例

四、@Param示例

五、@PathVariable示例


一、常用注解区别

@RequestParam@RequestBody@Param@PathVariable这四个注解在Spring框架中各自具有不同的用途和区别。

  1. @RequestParam:
    • 主要用于接收URL中的查询参数或表单数据中的字段。
    • 通常用于GET请求,但也可以用于POST请求。
    • 在方法参数上添加该注解,可以指定参数名称和是否必需。
    • 示例:@RequestParam("name") String name
  2. @RequestBody:
    • 主要用于处理HTTP请求体中的数据,通常用于POST、PUT等请求方法。
    • 该注解通常与@PostMapping@PutMapping等注解一起使用。
    • 请求体中的数据通常是以JSON、XML等格式发送的,@RequestBody可以将请求体中的数据自动绑定到指定的Java对象上。
    • 示例:@RequestBody User user,其中User是一个自定义的Java类。
  3. @Param:
    • 主要用于命名URI模板变量,使得在控制器方法中可以引用这些变量。
    • 该注解通常与@RequestMapping@GetMapping等注解一起使用。
    • 通过@Param注解可以为URI模板变量提供名称,然后在方法参数中使用该名称来接收变量的值。
    • 示例:@GetMapping("/users/{userId}")public String showUser(@Param("userId") Long id)
  4. @PathVariable:
    • 主要用于接收URI模板变量的值。
    • 该注解通常与@RequestMapping@GetMapping等注解一起使用,用于提取URI中的变量部分。
    • 示例:对于URI /users/{userId},可以使用@PathVariable Long userId来提取{userId}的值。

总结:

  • @RequestParam@PathVariable都是用于从请求中提取参数的,但@RequestParam用于提取查询参数,而@PathVariable用于提取URI模板变量。
  • @RequestBody用于处理请求体中的数据,通常与POST、PUT等请求方法一起使用。
  • @Param主要用于命名URI模板变量,使得在方法参数中可以引用这些变量。

二、@RequestParam示例

html:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Simple Form Example</title>
  6. </head>
  7. <body>
  8. <h2>Please Fill Out the Form</h2>
  9. <form action="/submitForm" method="post">
  10. <label for="name">Name:</label>
  11. <input type="text" id="name" name="name" required><br><br>
  12. <label for="age">Age:</label>
  13. <input type="number" id="age" name="age" required><br><br>
  14. <input type="submit" value="Submit">
  15. </form>
  16. </body>
  17. </html>

controller:

  1. package com.example.demo.controller;
  2. import org.springframework.web.bind.annotation.PostMapping;
  3. import org.springframework.web.bind.annotation.RequestParam;
  4. import org.springframework.web.bind.annotation.RestController;
  5. @RestController
  6. public class FormController {
  7. @PostMapping("/submitForm")
  8. public String handleFormSubmission(@RequestParam String name, @RequestParam int age) {
  9. // 处理表单数据
  10. // 这里只是简单地将接收到的数据返回给客户端
  11. return "Name: " + name + ", Age: " + age;
  12. }
  13. }

三、@RequestBody示例

html:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Submit Form with Axios</title>
  7. <!-- 引入axios -->
  8. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  9. </head>
  10. <body>
  11. <!-- 表单 -->
  12. <form id="submit-form">
  13. <label for="name">Name:</label>
  14. <input type="text" id="name" name="name">
  15. <label for="age">Age:</label>
  16. <input type="number" id="age" name="age">
  17. <button type="submit">Submit</button>
  18. </form>
  19. <!-- JavaScript代码 -->
  20. <script>
  21. // 获取表单元素
  22. const form = document.getElementById('submit-form');
  23. // 为表单添加提交事件监听器
  24. form.addEventListener('submit', function(event) {
  25. // 阻止表单的默认提交行为
  26. event.preventDefault();
  27. // 获取表单数据
  28. const name = document.getElementById('name').value;
  29. const age = document.getElementById('age').value;
  30. // 创建要发送的数据对象
  31. const data = {
  32. name: name,
  33. age: age
  34. };
  35. // 使用axios发送POST请求
  36. axios.post('/api/submit', data)
  37. .then(response => {
  38. // 请求成功处理
  39. console.log(response.data); // 打印后端返回的响应数据
  40. // 可以在这里更新页面或显示消息给用户
  41. })
  42. .catch(error => {
  43. // 请求失败处理
  44. console.error('Error:', error);
  45. // 可以在这里显示错误消息给用户
  46. });
  47. });
  48. </script>
  49. </body>
  50. </html>

controller:

  1. import org.springframework.web.bind.annotation.PostMapping;
  2. import org.springframework.web.bind.annotation.RequestBody;
  3. import org.springframework.web.bind.annotation.RestController;
  4. @RestController
  5. public class MyController {
  6. @PostMapping("/api/submit")
  7. public String handleSubmit(@RequestBody MyData data) {
  8. // 处理data对象
  9. String name = data.getName();
  10. int age = data.getAge();
  11. // 返回响应
  12. return "Data received: " + name + ", " + age;
  13. }
  14. }

四、@Param示例

  1. @RestController
  2. public class UserController {
  3. @GetMapping("/users/{userId}")
  4. public String getUser(@Param("userId") Long id) {
  5. // 你可以直接使用id参数来查询用户信息
  6. return "User with ID: " + id + " was retrieved";
  7. }
  8. }

五、@PathVariable示例

  1. @RestController
  2. public class UserController {
  3. @GetMapping("/users/{userId}")
  4. public String getUser(@PathVariable Long userId) {
  5. // 你可以直接使用userId参数来查询用户信息
  6. return "User with ID: " + userId + " was retrieved";
  7. }
  8. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/548809
推荐阅读
相关标签
  

闽ICP备14008679号