From f4c46d5b98cd1a594785e856480664656484fbe5 Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 27 Dec 2022 20:21:00 +0800 Subject: [PATCH] =?UTF-8?q?ServletUtil=E5=92=8CJakartaServletUtil=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=8E=B7=E5=8F=96=E6=89=80=E6=9C=89=E5=93=8D=E5=BA=94?= =?UTF-8?q?=E5=A4=B4=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 +- .../extra/servlet/JakartaServletUtil.java | 43 ++++++++++++++++++- .../cn/hutool/extra/servlet/ServletUtil.java | 27 +++++++++++- 3 files changed, 69 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82db70b28..614b47b6c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,8 @@ * 【core 】 修改PhoneUtil容易歧义的注释(issue#I63GWK@Gitee) * 【crypto】 KeyUtil中的读取KeyStore文件的方法增加全局Provider(issue#I6796G@Gitee) * 【extra 】 CompressUtil 新增 stripComponents 参数(pr#904@Gitee) -* +* 【extra 】 ServletUtil和JakartaServletUtil新增获取所有响应头的方法(pr#2828@Github) + ### 🐞Bug修复 * 【json 】 修复普通byte数组转JSONArray时的异常(pr#875@Gitee) * 【core 】 修复ArrayUtil.insert()不支持原始类型数组的问题(pr#874@Gitee) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java index 46e13be75..fa38b2911 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/servlet/JakartaServletUtil.java @@ -5,6 +5,7 @@ import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.ValueProvider; import cn.hutool.core.collection.ArrayIter; import cn.hutool.core.collection.IterUtil; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IORuntimeException; @@ -20,12 +21,12 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.URLUtil; - import jakarta.servlet.ServletOutputStream; import jakarta.servlet.ServletRequest; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; + import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; @@ -35,11 +36,14 @@ import java.io.PrintWriter; import java.io.Writer; import java.lang.reflect.Type; import java.nio.charset.Charset; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; +import java.util.List; /** * Servlet相关工具类封装 @@ -299,6 +303,43 @@ public class JakartaServletUtil { return headerMap; } + /** + * 获取请求所有的头(header)信息 + * + * @param request 请求对象{@link HttpServletRequest} + * @return header值 + * @since 6.0.0 + */ + public static Map> getHeadersMap(final HttpServletRequest request) { + final Map> headerMap = new LinkedHashMap<>(); + + final Enumeration names = request.getHeaderNames(); + String name; + while (names.hasMoreElements()) { + name = names.nextElement(); + headerMap.put(name, ListUtil.list(false, request.getHeaders(name))); + } + + return headerMap; + } + + /** + * 获取响应所有的头(header)信息 + * + * @param response 响应对象{@link HttpServletResponse} + * @return header值 + */ + public static Map> getHeadersMap(final HttpServletResponse response) { + final Map> headerMap = new HashMap<>(); + + final Collection names = response.getHeaderNames(); + for (final String name : names) { + headerMap.put(name, response.getHeaders(name)); + } + + return headerMap; + } + /** * 忽略大小写获得请求header中的信息 diff --git a/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java b/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java index 9fb858d53..7d5a7f7d2 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java @@ -5,6 +5,7 @@ import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.ValueProvider; import cn.hutool.core.collection.ArrayIter; import cn.hutool.core.collection.IterUtil; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IORuntimeException; @@ -35,11 +36,13 @@ import java.io.PrintWriter; import java.io.Writer; import java.lang.reflect.Type; import java.nio.charset.Charset; -import java.util.Collections; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; /** @@ -300,13 +303,33 @@ public class ServletUtil { return headerMap; } + /** + * 获取请求所有的头(header)信息 + * + * @param request 请求对象{@link HttpServletRequest} + * @return header值 + * @since 6.0.0 + */ + public static Map> getHeadersMap(final HttpServletRequest request) { + final Map> headerMap = new LinkedHashMap<>(); + + final Enumeration names = request.getHeaderNames(); + String name; + while (names.hasMoreElements()) { + name = names.nextElement(); + headerMap.put(name, ListUtil.list(false, request.getHeaders(name))); + } + + return headerMap; + } + /** * 获取响应所有的头(header)信息 * * @param response 响应对象{@link HttpServletResponse} * @return header值 */ - public static Map> getHeaderMap(HttpServletResponse response) { + public static Map> getHeadersMap(HttpServletResponse response) { final Map> headerMap = new HashMap<>(); final Collection names = response.getHeaderNames();