全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-18 8 分钟 ✍️ juanwangdev

请求接收与参数绑定

SpringMVC通过参数绑定机制将请求数据自动映射到控制器方法参数。

参数绑定原理

SpringMVC使用HandlerAdapter调用控制器方法,通过HandlerMethodArgumentResolver解析参数:

Java
HTTP请求 → DispatcherServlet → HandlerAdapter → ArgumentResolver → 方法参数

支持的参数类型

Servlet API

Java
@RequestMapping("/servlet")
public String servlet(HttpServletRequest request,
                      HttpServletResponse response,
                      HttpSession session) {
    return "success";
}

基本类型

Java
@RequestMapping("/basic")
public String basic(Integer id, String name, Boolean active) {
    return "success";
}

POJO对象

Java
@RequestMapping("/pojo")
public String pojo(User user) {
    return "success";
}

数组与集合

Java
@RequestMapping("/array")
public String array(@RequestParam("id") Integer[] ids,
                    @RequestParam("name") List<String> names) {
    return "success";
}

路径变量

Java
@RequestMapping("/path/{id}")
public String path(@PathVariable Integer id) {
    return "success";
}

请求体

Java
@RequestMapping("/body")
public String body(@RequestBody User user) {
    return "success";
}

参数绑定注解

注解来源说明
@RequestParam请求参数Query String参数
@PathVariableURL路径RESTful路径变量
@RequestHeader请求头HTTP Header
@CookieValueCookieCookie值
@RequestBody请求体JSON/XML数据
@ModelAttribute模型表单绑定对象

默认参数绑定

SpringMVC自动绑定以下类型,无需注解:

类型说明
HttpServletRequest请求对象
HttpServletResponse响应对象
HttpSession会话对象
Model/ModelMap模型数据
Principal认证主体
Locale区域信息
InputStream/Reader请求体流
OutputStream/Writer响应体流

综合示例

text
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/users/{id}")
    public User getUser(
        @PathVariable Integer id,
        @RequestParam(required = false) String name,
        @RequestHeader("User-Agent") String userAgent
    ) {
        User user = new User();
        user.setId(id);
        user.setName(name);
        return user;
    }

    @PostMapping("/users")
    public User createUser(
        @RequestBody User user,
        HttpServletRequest request,
        HttpSession session
    ) {
        user.setCreateTime(new Date());
        return userService.save(user);
    }
}

数据绑定流程

  1. 解析请求参数名
  2. 查找匹配的方法参数
  3. 类型转换
  4. 数据校验(如有@Valid)
  5. 绑定到方法参数

参数名与请求参数名一致时可省略注解,不一致时需使用注解指定。

要点总结

  • 参数绑定自动将请求数据映射到方法参数
  • @RequestParam绑定请求参数,@PathVariable绑定路径变量
  • POJO自动绑定同名属性
  • Servlet API类型自动注入

📝 发现内容有误?点击此处直接编辑

← 上一篇 请求头与Cookie
下一篇 → 请求映射注解
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库