@RequestParam接收表单
时间: 2025-05-03 12:46:29 浏览: 32
### 使用 @RequestParam 注解接收 HTML 表单参数
在 Spring MVC 中,`@RequestParam` 注解主要用于将 HTTP 请求中的查询参数或表单字段绑定到控制器方法的参数上。当处理来自 HTML 表单的数据时,可以通过 `@RequestParam` 来捕获这些数据并将其传递给业务逻辑层。
#### 基本功能描述
`@RequestParam` 支持多种配置选项来增强其灵活性,比如指定默认值、标记参数是否必需等。这使得开发者能够更精确地控制请求参数的行为[^1]。
以下是几个重要的属性及其作用:
- **required**: 定义该参数是否为必填项,默认值为 true。如果设为 false,则即使客户端未提供此参数也不会抛出异常。
- **defaultValue**: 当参数缺失时使用的默认值。只有当 required 属性被设置为 false 时才生效[^2]。
#### 示例代码展示
下面是一个完整的例子,演示如何利用 `@RequestParam` 处理 HTML 表单提交的数据:
假设有一个简单的登录页面,其中包含用户名 (`username`) 和密码 (`password`) 字段。
```html
<!-- login.html -->
<form action="/login" method="get">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>
<button type="submit">Login</button>
</form>
```
对应的后端 Controller 方法如下所示:
```java
@RestController
public class LoginController {
@GetMapping("/login")
public ResponseEntity<String> handleLogin(
@RequestParam(value = "username", required = true) String username,
@RequestParam(value = "password", defaultValue = "defaultPassword") String password) {
// 打印接收到的参数
System.out.println("Username received: " + username);
System.out.println("Password received: " + password);
return ResponseEntity.ok("Logged in as " + username);
}
}
```
在这个例子中:
- 用户名是必须提供的(因为设置了 `required=true`),如果没有传入会报错。
- 密码则允许为空,在这种情况下会采用 `"defaultPassword"` 这一默认值[^3]。
#### 注意事项
尽管 `@RequestParam` 非常适合用来读取 GET 请求中的查询字符串或者 POST 请求里 Content-Type 为 `application/x-www-form-urlencoded` 的键值对形式的内容;但它并不适用于 JSON 数据体解析场景——对于后者应该考虑使用 `@RequestBody` 注解替代。
---
阅读全文
相关推荐


















