Servlet API 方式
package world.xuewei.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; /** * 第一个控制器 * * @author 薛伟 * @since 2023/10/30 16:18 */ @Controller public class HeaderController { @RequestMapping("/header") public String header(HttpServletRequest request) { String token = request.getHeader("Token"); return "index"; } }
@RequestHeader 注解
@RequestHeader
注解是 SpringMVC 框架中的一个注解,用于从 HTTP 请求头中获取值并绑定到方法参数或模型属性上。
使用 @RequestHeader
注解时,你需要指定要获取的请求头的名称。当请求被处理时,SpringMVC 会自动解析请求头,并将对应名称的请求头值绑定到方法参数或模型属性上。
如果请求中不存在指定名称的 Header,headerValue
参数将会被设置为 null
(如果指定了 required=false
)或抛出异常(默认)(如果未指定 required=false
)。
除了获取单个请求头的值外,@RequestHeader
注解还支持以下功能:
- 指定默认值:可以使用
defaultValue
属性为参数指定默认值,当请求中不存在指定名称的请求头时,将使用该默认值。 - 支持类型转换:
@RequestHeader
注解可以将请求头的值转换为不同的类型,例如int
、boolean
、Date
等。如果无法转换,则会抛出异常。 - 属性绑定:可以使用
@RequestHeader
注解将请求头的值绑定到模型属性上,从而在视图中使用该属性。
需要注意的是,@RequestHeader
注解只能用于处理简单类型的请求头值。如果需要处理复杂的请求头结构,可以考虑使用 javax.servlet.http.HttpServletRequest
对象或自定义注解与拦截器来实现。
package world.xuewei.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; /** * 第一个控制器 * * @author 薛伟 * @since 2023/10/30 16:18 */ @Controller public class HeaderController { @RequestMapping("/header") public String header(@RequestHeader("Token") String token) { System.out.println(token); return "index"; } }