@RequestParam接收参数例子
时间: 2023-11-30 07:43:17 浏览: 93
以下是一个使用@RequestParam接收参数的例子:
```java
@RequestMapping("/hello")
@ResponseBody
public String hello(@RequestParam("name") String name) {
return "Hello, " + name + "!";
}
```
在上面的例子中,@RequestParam注解用于标注控制器方法的参数name,表示从请求中获取名为name的参数的值,并将其赋值给方法的参数name。如果请求中没有名为name的参数,则会抛出异常。
假设我们向该控制器发送一个GET请求,请求的URL为/hello?name=Tom,那么该控制器方法将返回字符串"Hello, Tom!"。
相关问题
@RequestParam接收参数为何为空
@RequestParam接收参数为空的原因可能有以下几种情况:
1.前端传入的参数名与后台接收的参数名不一致,可以通过@RequestParam注解中的value属性指定参数名。
2.前端传入的参数类型与后台接收的参数类型不一致,可以通过@RequestParam注解中的required属性设置是否必须传入参数,或者使用@RequestBody注解接收json数据。
3.前端未传入该参数,可以通过@RequestParam注解中的defaultValue属性设置默认值。
以下是一个@RequestParam接收参数为空的例子:
```java
@RequestMapping("/test")
public String test(@RequestParam(value = "name", required = true) String name) {
System.out.println("name: " + name);
return "success";
}
```
如果前端未传入name参数,则会抛出MissingServletRequestParameterException异常,可以通过设置required属性为false或者设置defaultValue属性来避免该异常的抛出。
@RequestParam接收表单
### 使用 @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` 注解替代。
---
阅读全文
相关推荐















