org.springframework.web.bind.annotation.RequestHeader
注解用于将请求的头信息数据映射到请求处理方法的形式参数
上
使用@Requestheader
注解可指定如下表所示的属性。
属性 |
类型 |
是否必要 |
说明 |
name |
String |
否 |
指定请求参数绑定的名称 |
value |
String |
否 |
name 属性的别名 |
required |
boolean |
否 |
指示参数是否必须绑定 |
defaultValue |
String |
否 |
如果没有传递参数而使用的默认值 |
@RequestHeader
注解示例代码如下:
1 2 3 4 5 6 7
| @RequestMapping(value="/requestHeaderTest") public void requestHeaderTest( @RequestHeader ("User-Agent") String userAgent, @RequestHeader(value="Accept") String[] accepts) { ... }
|
以上配置自动将请求头"User- Agent"
的值赋到userAgent
变量上,并将请求头" Accept"
的值赋到accepts
变量上。
新建一个项目RequestHeaderTest
,加入所需的jar
文件,示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| package org.fkit.controller;
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestHeader;
@Controller public class RequestHeaderController { @GetMapping(value = "/requestHeaderTest") public void requestHeaderTest(@RequestHeader("User-Agent") String userAgent, @RequestHeader(value = "Accept") String[] accepts, HttpServletResponse response) { response.setContentType("text/html; charset=utf-8"); response.setCharacterEncoding("utf-8"); PrintWriter writer; try { writer = response.getWriter(); writer.println( "通过@requestHeaderTest获得User-Agent: " + userAgent + "<br>"); writer.println("通过@requestHeaderTest获得Accept: " + "<br>"); for (String accept : accepts) { writer.println(accept + "<br>"); } } catch (IOException e) { e.printStackTrace(); } } }
|
在requestHeaderTest
方法中使用@RequestHeader
注解获取请求头"User-Agent"
的值并赋给userAgent
变量,获取请求头"Accept"
的值并赋给accepts
变量。
index.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>@RequestHeader测试</title> </head> <body> <h2>@RequestHeader测试</h2> <a href="requestHeaderTest">测试@RequestHeader注解</a> <br> </body> </html>
|
部署RequestHeaderTest
这个Web
应用,在浏览器中输入如下URL
来测试应用:
1
| http://localhost:8080/RequestHeaderTest/
|
此时会显示index.jsp
页面的内容,单击测试@RequestHeader注解
超链接发送请求,将调用requestHeaderTest
方法,浏览器显示效果如下:
1 2 3 4 5 6
| 通过@requestHeaderTest获得User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0 通过@requestHeaderTest获得Accept: text/html application/xhtml+xml application/xml;q=0.9 */*;q=0.8
|
可以看到,请求头User-Agent
的值赋给了userAgent
变量,请求头Accept
的值赋给了accepts
变量,不过要注意,不同的浏览器请求头数据略有不同。
原文链接: 3.7 @RequestHeader注解