Spring MVC 绑定请求包中的数据

本文介绍了SpringMVC中用于解析请求包数据的四个注解:@RequestParam、@CookieValue、@RequestHeader和@PathVariable的功能及使用场景。通过实例演示如何绑定请求参数、Cookie、请求头及URL变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

和大家一起讲解 Spring MVC 是如何使用下面的几个注解解析请求包中的数据。

  • @RequestParam ;
  • @CookieValue;
  • @RequestHeader;
  • @PathVariable 。

重点就是你要记住它们的使用场景。

Spring MVC 提供了很多实用的注解,用来解析请求包、自动绑定请求包中不同位置的数据。在使用注解解析请求包中的数据前,先了解一下请求包的格式。

WEB 应用程序中, 所谓的请求包是指遵循 HTTP 协议的一种数据格式包。在某些文章中,称请求包为报文。

 

一个完整的请求包应该由 3 个部分组成:

  • 请求行: 包括请求方法、请求的资源地址(URL) 、HTTP 协议版本号;
  • 消息头: 消息头是传送给服务器的信息,以 key:value 的格式描述;
  • 实体部分或报文体: 以 key=value 的数据格式保存客户端传递给应用程序的数据。

@RequestParam

功能: 自动绑定请求包中的请求参数中的值。

请求参数可以出现在请求包中的 2 个位置:

  • 用 ? 的方式附加在 URL 后面。如 http://localhost:8888/saveUser?name=abc 。name 就是请求参数,abc 是值;
  • 以类似于 name=abc 的方式存储在请求包的报文体中(实体部分)。

Tips: 当客户端以 POST 方法请求时,数据将存储在实体部分。

@RequestMapping(value="/saveUser")
public String save(@RequestParam("userName") String userName,@RequestParam("password")  password){}

@CookieValue

功能描述: @CookieValue 用来自动绑定请求包中的 Cookie 值。

Cookie 一般由 WEB 应用程序在服务器端创建,通过响应包传递给浏览器,并可以在浏览器端以文件的形式存储。在后续请求过程中,请求包又可以携带此 Cookie 返回给服务器。

Cookie 所能保存的数据量有限且只能是字符类型,但其应用场景较多,如 WEB 程序中的 Session 组件的状态维护、用户免输入登录、历史记录显示等功能都可以通过 Cookie 实现。

如果要获取请求包中的 Cookie 中的值,控制器中只需要如下编码便可:

 

@RequestMapping(value="/sessionId")
public String getSessionId(@CookieValue("JSESSIONID") String sessionId){

}

当请求格式类似于 http://localhost:8888/saveUser?sessionId 时,getSessionId()方法中的 sessionId 参数会被注入 Cookie 中所携带的 JSESSIONID 的值。

只要指定 Cookie 的名称,@CookieValue 便能自动获取此 Cookie 的值。

@PathVariable

功能描述: @PathVariable 注解用来获取 URL 中变量的值。

什么是 URL 中的变量?还是用一个实例来说话:

@RequestMapping("/user/{userId}")
public String getUserById(@PathVariable("userId") String userId){

}

{userId} 就是变量占位符。具体请求时,可使用一个真实值替换。如请求格式:http://localhost:8888/user/1 时,@PathVariable 可以为 getUserById() 方法中的 userId 参数注入值 1。

@PathVariable 注解同样有一个 required 属性,表示是否强制 URL 中有变量的存在。

boolean required() default true;

@PathVariable 注解非常有用,请你一定要记住它。

这 4 个注解的使用方式大同小异,每一种注解各自关注了请求包中不同位置的数据:

  • @RequestParam :关注请求参数中的值;
  • @CookieValue:关注 Cookie 的值;
  • @RequestHeader 关注请求头的值;
  • @PathVariable :关注请求变量的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值