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请求参数。