29、请求处理-常用参数注解使用

29、请求处理-常用参数注解使用

在Spring Boot中,处理HTTP请求时常用的参数注解有:

#### 获取路径变量 - `@PathVariable`

- **用途**:用于获取URL路径中的变量值。

- **示例**:

  ```java

  @GetMapping("/user/{id}")

  public User getUser(@PathVariable("id") Long userId) {

      return userService.getUserById(userId);

  }

  ```

- **说明**:当请求`/user/123`时,`userId`会被赋值为`123`。

#### 获取请求参数 - `@RequestParam`

- **用途**:用于获取请求参数(URL查询参数或表单数据)。

- **示例**:

  ```java

  @GetMapping("/search")

  public String search(@RequestParam("q") String query) {

      return "Search results for: " + query;

  }

  ```

- **说明**:当请求`/search?q=Spring%20Boot`时,`query`会被赋值为`Spring Boot`。

- **可选参数和默认值**:

  - **可选参数**:`required = false`表示参数可以不存在。

  - **默认值**:`defaultValue = "defaultValue"`设置参数默认值。

#### 获取请求体 - `@RequestBody`

- **用途**:用于获取请求体的内容,通常用于处理`POST`、`PUT`等请求的JSON或XML数据。

- **示例**:

  ```java

  @PostMapping("/user")

  public User createUser(@RequestBody User user) {

      return userService.saveUser(user);

  }

  ```

- **说明**:请求体中的JSON数据会被自动转换为`User`对象。

#### 获取请求头 - `@RequestHeader`

- **用途**:用于获取HTTP请求头中的值。

- **示例**:

  ```java

  @GetMapping("/user-agent")

  public String getUserAgent(@RequestHeader("User-Agent") String userAgent) {

      return "Your user agent is: " + userAgent;

  }

  ```

- **说明**:获取请求中的`User-Agent`头信息。

#### 获取Cookie值 - `@CookieValue`

- **用途**:用于获取请求中的Cookie值。

- **示例**:

  ```java

  @GetMapping("/cookie")

  public String getCookieValue(@CookieValue("JSESSIONID") String sessionId) {

      return "Your session ID is: " + sessionId;

  }

  ```

- **说明**:获取名为`JSESSIONID`的Cookie值。

#### 获取请求属性 - `@RequestAttribute`

- **用途**:用于获取请求属性,通常在请求转发时使用。

- **示例**:

  ```java

  @GetMapping("/forward")

  public String forwardRequest(HttpServletRequest request) {

      request.setAttribute("message", "Hello from forward");

      return "forward:/result";

  }

  

  @GetMapping("/result")

  public String getResult(@RequestAttribute("message") String message) {

      return "Result: " + message;

  }

  ```

- **说明**:在转发请求时,通过`HttpServletRequest`设置属性,然后在目标方法中通过`@RequestAttribute`获取。

#### 获取矩阵变量 - `@MatrixVariable`

- **用途**:用于获取URL路径中的矩阵变量(Spring Boot默认禁用)。

- **示例**:

  ```java

  @GetMapping("/path;param=value")

  public String getPathParam(@MatrixVariable("param") String value) {

      return "Matrix variable value: " + value;

  }

  ```

- **启用矩阵变量**:需要在`application.properties`中配置`spring.mvc.pathmatch.matching-strategy=ant_path_matcher`。

#### 数据绑定 - `@ModelAttribute`

- **用途**:用于将请求参数绑定到模型对象,常用于表单提交。

- **示例**:

  ```java

  @PostMapping("/user")

  public String createUser(@ModelAttribute User user) {

      userService.saveUser(user);

      return "userCreated";

  }

  ```

- **说明**:表单数据会自动绑定到`User`对象的属性上。

通过合理使用这些注解,可以方便地在Spring Boot中处理各种HTTP请求参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值