2026/3/26 18:58:14
网站建设
项目流程
秦皇岛营销式网站,代码转wordpress,wordpress下载证书后,房地产销售新手入门知识在HttpServletRequest中#xff0c;有多种方法可以获取请求头信息。以下是常用的几种方法#xff1a;1. 获取所有请求头名称// 获取所有请求头名称
EnumerationString headerNames request.getHeaderNames();// 遍历所有请求头名称
while (headerNames.hasMoreEleme…在HttpServletRequest中有多种方法可以获取请求头信息。以下是常用的几种方法1. 获取所有请求头名称// 获取所有请求头名称 EnumerationString headerNames request.getHeaderNames(); // 遍历所有请求头名称 while (headerNames.hasMoreElements()) { String headerName headerNames.nextElement(); // 处理每个请求头名称 }2. 获取特定请求头的值// 获取单个请求头的值返回第一个值 String contentType request.getHeader(Content-Type); // 获取单个请求头的所有值允许多个值 EnumerationString acceptHeaders request.getHeaders(Accept); // 遍历特定请求头的多个值 while (acceptHeaders.hasMoreElements()) { String value acceptHeaders.nextElement(); System.out.println(value); }3. 将请求头转换为Map格式// 将请求头转换为MapString, String同名请求头只取第一个值 MapString, String headersMap new HashMap(); EnumerationString headerNames request.getHeaderNames(); while (headerNames.hasMoreElements()) { String headerName headerNames.nextElement(); headersMap.put(headerName, request.getHeader(headerName)); }4. 将请求头转换为MapString, ListString支持多值// 将请求头转换为MapString, ListString MapString, ListString headersMapWithList new HashMap(); EnumerationString headerNames request.getHeaderNames(); while (headerNames.hasMoreElements()) { String headerName headerNames.nextElement(); ListString headerValues new ArrayList(); EnumerationString values request.getHeaders(headerName); while (values.hasMoreElements()) { headerValues.add(values.nextElement()); } headersMapWithList.put(headerName, headerValues); }5. 使用Java 8 Stream API处理// 使用Stream API转换为Map MapString, String headers Collections.list(request.getHeaderNames()) .stream() .collect(Collectors.toMap( Function.identity(), request::getHeader )); // 转换为MapString, ListString MapString, ListString headersWithList Collections.list(request.getHeaderNames()) .stream() .collect(Collectors.toMap( Function.identity(), name - Collections.list(request.getHeaders(name)) ));6. 完整示例方法import javax.servlet.http.HttpServletRequest; import java.util.*; public class HeadersUtils { /** * 获取所有请求头同名请求头只取第一个值 */ public static MapString, String getAllHeaders(HttpServletRequest request) { MapString, String headers new HashMap(); EnumerationString headerNames request.getHeaderNames(); while (headerNames.hasMoreElements()) { String headerName headerNames.nextElement(); headers.put(headerName, request.getHeader(headerName)); } return headers; } /** * 获取所有请求头支持多值 */ public static MapString, ListString getAllHeadersWithList(HttpServletRequest request) { MapString, ListString headers new HashMap(); EnumerationString headerNames request.getHeaderNames(); while (headerNames.hasMoreElements()) { String headerName headerNames.nextElement(); ListString values new ArrayList(); EnumerationString headerValues request.getHeaders(headerName); while (headerValues.hasMoreElements()) { values.add(headerValues.nextElement()); } headers.put(headerName, values); } return headers; } /** * 打印所有请求头 */ public static void printAllHeaders(HttpServletRequest request) { EnumerationString headerNames request.getHeaderNames(); System.out.println( Request Headers ); while (headerNames.hasMoreElements()) { String headerName headerNames.nextElement(); System.out.print(headerName : ); EnumerationString headerValues request.getHeaders(headerName); while (headerValues.hasMoreElements()) { System.out.print(headerValues.nextElement()); if (headerValues.hasMoreElements()) { System.out.print(, ); } } System.out.println(); } System.out.println(); } }注意事项大小写不敏感获取请求头时键名是大小写不敏感的多值请求头如Accept、Cookie等可能有多个值使用getHeaders()获取枚举常用请求头Content-TypeUser-AgentAuthorizationCookieAcceptAccept-Language空值处理如果请求头不存在getHeader()返回null在Spring Boot中的使用RestController public class HeadersController { GetMapping(/headers) public MapString, String getAllHeaders(RequestHeader MapString, String headers) { // Spring会自动注入所有请求头 return headers; } GetMapping(/headers-with-annotation) public void getSpecificHeaders( RequestHeader(User-Agent) String userAgent, RequestHeader(value X-Custom-Header, required false) String customHeader) { // 获取特定请求头 } }选择哪种方法取决于具体需求如果只需要部分请求头使用getHeader(name)如果需要处理同名多值请求头使用getHeaders(name)如果需要所有请求头建议使用方法4或5转换为Map