@RequestHeader注解:获取请求头参数

发布时间 2023-04-23 17:29:38作者: r1se

1.前言

Spring MVC提供了 @RequestHeader注解,其作用是将请求头中的参数值映射到控制器的参数中。常用属性如下:

  • name:header值被绑定到的参数名称(The name of the request header to bind to)。只有此属性时,可以省略name,简写为@RequestHeader("User-Agent")
  • required:Boolean类型,默认值为true,即请求头中必须包含此参数。
  • defaultValue:为请求头中的参数提供默认值,如果拿不到值,就将此值赋给控制器的参数。

2.案例

在下面的代码片段中,定义了一个映射到/hello.htm的hello控制器方法。
同时用 @RequestHeader注解将请求头中”User-Agent“的变量与”userAgent“变量绑定。
当此某个请求映射到了此控制器方法,Spring会检查请求头中的”User-Agent“变量,并将其与”userAgent“变量绑定。

@Controller
public class HelloController {
    @RequestMapping(value = "/test") 
    public String hello(@RequestHeader(value="User-Agent") String userAgent){
        //...
    } 	    
} 

如果 @RequestHeader绑定的变量,在请求头中不存在,Spring会将控制器中的参数初始化为null。如果想给控制器参数提供一个默认值,在 @RequestHeader的defaultParameter属性。

@RequestMapping(value = "/hello.htm") 
public String hello(@RequestHeader(value="User-Agent", defaultValue="foo") String userAgent){
	//.. 
}