From 3c8d864b5f68af5167199e0d5c9ff6c0c5852638 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期一, 20 一月 2025 11:35:45 +0800
Subject: [PATCH] !639 发布 5.3.0-BETA 公测版本 Merge pull request !639 from 疯狂的狮子Li/dev

---
 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java |  142 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 119 insertions(+), 23 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java
index 91e2990..bd1aab8 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java
@@ -10,6 +10,7 @@
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.springframework.http.MediaType;
+import org.springframework.util.LinkedCaseInsensitiveMap;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -19,11 +20,12 @@
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 import java.util.Collections;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
 
 /**
- * 瀹㈡埛绔伐鍏风被
+ * 瀹㈡埛绔伐鍏风被锛屾彁渚涜幏鍙栬姹傚弬鏁般�佸搷搴斿鐞嗐�佸ご閮ㄤ俊鎭瓑甯哥敤鎿嶄綔
  *
  * @author ruoyi
  */
@@ -31,52 +33,73 @@
 public class ServletUtils extends JakartaServletUtil {
 
     /**
-     * 鑾峰彇String鍙傛暟
+     * 鑾峰彇鎸囧畾鍚嶇О鐨� String 绫诲瀷鐨勮姹傚弬鏁�
+     *
+     * @param name 鍙傛暟鍚�
+     * @return 鍙傛暟鍊�
      */
     public static String getParameter(String name) {
         return getRequest().getParameter(name);
     }
 
     /**
-     * 鑾峰彇String鍙傛暟
+     * 鑾峰彇鎸囧畾鍚嶇О鐨� String 绫诲瀷鐨勮姹傚弬鏁帮紝鑻ュ弬鏁颁笉瀛樺湪锛屽垯杩斿洖榛樿鍊�
+     *
+     * @param name         鍙傛暟鍚�
+     * @param defaultValue 榛樿鍊�
+     * @return 鍙傛暟鍊兼垨榛樿鍊�
      */
     public static String getParameter(String name, String defaultValue) {
         return Convert.toStr(getRequest().getParameter(name), defaultValue);
     }
 
     /**
-     * 鑾峰彇Integer鍙傛暟
+     * 鑾峰彇鎸囧畾鍚嶇О鐨� Integer 绫诲瀷鐨勮姹傚弬鏁�
+     *
+     * @param name 鍙傛暟鍚�
+     * @return 鍙傛暟鍊�
      */
     public static Integer getParameterToInt(String name) {
         return Convert.toInt(getRequest().getParameter(name));
     }
 
     /**
-     * 鑾峰彇Integer鍙傛暟
+     * 鑾峰彇鎸囧畾鍚嶇О鐨� Integer 绫诲瀷鐨勮姹傚弬鏁帮紝鑻ュ弬鏁颁笉瀛樺湪锛屽垯杩斿洖榛樿鍊�
+     *
+     * @param name         鍙傛暟鍚�
+     * @param defaultValue 榛樿鍊�
+     * @return 鍙傛暟鍊兼垨榛樿鍊�
      */
     public static Integer getParameterToInt(String name, Integer defaultValue) {
         return Convert.toInt(getRequest().getParameter(name), defaultValue);
     }
 
     /**
-     * 鑾峰彇Boolean鍙傛暟
+     * 鑾峰彇鎸囧畾鍚嶇О鐨� Boolean 绫诲瀷鐨勮姹傚弬鏁�
+     *
+     * @param name 鍙傛暟鍚�
+     * @return 鍙傛暟鍊�
      */
     public static Boolean getParameterToBool(String name) {
         return Convert.toBool(getRequest().getParameter(name));
     }
 
     /**
-     * 鑾峰彇Boolean鍙傛暟
+     * 鑾峰彇鎸囧畾鍚嶇О鐨� Boolean 绫诲瀷鐨勮姹傚弬鏁帮紝鑻ュ弬鏁颁笉瀛樺湪锛屽垯杩斿洖榛樿鍊�
+     *
+     * @param name         鍙傛暟鍚�
+     * @param defaultValue 榛樿鍊�
+     * @return 鍙傛暟鍊兼垨榛樿鍊�
      */
     public static Boolean getParameterToBool(String name, Boolean defaultValue) {
         return Convert.toBool(getRequest().getParameter(name), defaultValue);
     }
 
     /**
-     * 鑾峰緱鎵�鏈夎姹傚弬鏁�
+     * 鑾峰彇鎵�鏈夎姹傚弬鏁帮紙浠� Map 鐨勫舰寮忚繑鍥烇級
      *
      * @param request 璇锋眰瀵硅薄{@link ServletRequest}
-     * @return Map
+     * @return 璇锋眰鍙傛暟鐨� Map锛岄敭涓哄弬鏁板悕锛屽�间负鍙傛暟鍊兼暟缁�
      */
     public static Map<String, String[]> getParams(ServletRequest request) {
         final Map<String, String[]> map = request.getParameterMap();
@@ -84,10 +107,10 @@
     }
 
     /**
-     * 鑾峰緱鎵�鏈夎姹傚弬鏁�
+     * 鑾峰彇鎵�鏈夎姹傚弬鏁帮紙浠� Map 鐨勫舰寮忚繑鍥烇紝鍊间负瀛楃涓插舰寮忕殑鎷兼帴锛�
      *
      * @param request 璇锋眰瀵硅薄{@link ServletRequest}
-     * @return Map
+     * @return 璇锋眰鍙傛暟鐨� Map锛岄敭涓哄弬鏁板悕锛屽�间负鎷兼帴鍚庣殑瀛楃涓�
      */
     public static Map<String, String> getParamMap(ServletRequest request) {
         Map<String, String> params = new HashMap<>();
@@ -98,33 +121,96 @@
     }
 
     /**
-     * 鑾峰彇request
+     * 鑾峰彇褰撳墠 HTTP 璇锋眰瀵硅薄
+     *
+     * @return 褰撳墠 HTTP 璇锋眰瀵硅薄
      */
     public static HttpServletRequest getRequest() {
-        return getRequestAttributes().getRequest();
+        try {
+            return getRequestAttributes().getRequest();
+        } catch (Exception e) {
+            return null;
+        }
     }
 
     /**
-     * 鑾峰彇response
+     * 鑾峰彇褰撳墠 HTTP 鍝嶅簲瀵硅薄
+     *
+     * @return 褰撳墠 HTTP 鍝嶅簲瀵硅薄
      */
     public static HttpServletResponse getResponse() {
-        return getRequestAttributes().getResponse();
+        try {
+            return getRequestAttributes().getResponse();
+        } catch (Exception e) {
+            return null;
+        }
     }
 
     /**
-     * 鑾峰彇session
+     * 鑾峰彇褰撳墠璇锋眰鐨� HttpSession 瀵硅薄
+     * <p>
+     * 濡傛灉褰撳墠璇锋眰宸茬粡鍏宠仈浜嗕竴涓細璇濓紙鍗冲凡缁忓瓨鍦ㄦ湁鏁堢殑 session ID锛夛紝
+     * 鍒欒繑鍥炶浼氳瘽瀵硅薄锛涘鏋滄病鏈夊叧鑱斾細璇濓紝鍒欎細鍒涘缓涓�涓柊鐨勪細璇濆璞″苟杩斿洖銆�
+     * <p>
+     * HttpSession 鐢ㄤ簬瀛樺偍浼氳瘽绾у埆鐨勬暟鎹紝濡傜敤鎴风櫥褰曚俊鎭�佽喘鐗╄溅鍐呭绛夛紝
+     * 鍙互鍦ㄥ涓姹備箣闂村叡浜細璇濇暟鎹�
+     *
+     * @return 褰撳墠璇锋眰鐨� HttpSession 瀵硅薄
      */
     public static HttpSession getSession() {
         return getRequest().getSession();
     }
 
+    /**
+     * 鑾峰彇褰撳墠璇锋眰鐨勮姹傚睘鎬�
+     *
+     * @return {@link ServletRequestAttributes} 璇锋眰灞炴�у璞�
+     */
     public static ServletRequestAttributes getRequestAttributes() {
-        RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
-        return (ServletRequestAttributes) attributes;
+        try {
+            RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
+            return (ServletRequestAttributes) attributes;
+        } catch (Exception e) {
+            return null;
+        }
     }
 
     /**
-     * 灏嗗瓧绗︿覆娓叉煋鍒板鎴风
+     * 鑾峰彇鎸囧畾璇锋眰澶寸殑鍊硷紝濡傛灉澶撮儴涓虹┖鍒欒繑鍥炵┖瀛楃涓�
+     *
+     * @param request 璇锋眰瀵硅薄
+     * @param name    澶撮儴鍚嶇О
+     * @return 澶撮儴鍊�
+     */
+    public static String getHeader(HttpServletRequest request, String name) {
+        String value = request.getHeader(name);
+        if (StringUtils.isEmpty(value)) {
+            return StringUtils.EMPTY;
+        }
+        return urlDecode(value);
+    }
+
+    /**
+     * 鑾峰彇鎵�鏈夎姹傚ご鐨� Map锛岄敭涓哄ご閮ㄥ悕绉帮紝鍊间负澶撮儴鍊�
+     *
+     * @param request 璇锋眰瀵硅薄
+     * @return 璇锋眰澶寸殑 Map
+     */
+    public static Map<String, String> getHeaders(HttpServletRequest request) {
+        Map<String, String> map = new LinkedCaseInsensitiveMap<>();
+        Enumeration<String> enumeration = request.getHeaderNames();
+        if (enumeration != null) {
+            while (enumeration.hasMoreElements()) {
+                String key = enumeration.nextElement();
+                String value = request.getHeader(key);
+                map.put(key, value);
+            }
+        }
+        return map;
+    }
+
+    /**
+     * 灏嗗瓧绗︿覆娓叉煋鍒板鎴风锛堜互 JSON 鏍煎紡杩斿洖锛�
      *
      * @param response 娓叉煋瀵硅薄
      * @param string   寰呮覆鏌撶殑瀛楃涓�
@@ -141,37 +227,47 @@
     }
 
     /**
-     * 鏄惁鏄疉jax寮傛璇锋眰
+     * 鍒ゆ柇褰撳墠璇锋眰鏄惁涓� Ajax 寮傛璇锋眰
      *
-     * @param request
+     * @param request 璇锋眰瀵硅薄
+     * @return 鏄惁涓� Ajax 璇锋眰
      */
     public static boolean isAjaxRequest(HttpServletRequest request) {
 
+        // 鍒ゆ柇 Accept 澶撮儴鏄惁鍖呭惈 application/json
         String accept = request.getHeader("accept");
         if (accept != null && accept.contains(MediaType.APPLICATION_JSON_VALUE)) {
             return true;
         }
 
+        // 鍒ゆ柇 X-Requested-With 澶撮儴鏄惁鍖呭惈 XMLHttpRequest
         String xRequestedWith = request.getHeader("X-Requested-With");
         if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest")) {
             return true;
         }
 
+        // 鍒ゆ柇 URI 鍚庣紑鏄惁涓� .json 鎴� .xml
         String uri = request.getRequestURI();
         if (StringUtils.equalsAnyIgnoreCase(uri, ".json", ".xml")) {
             return true;
         }
 
+        // 鍒ゆ柇璇锋眰鍙傛暟 __ajax 鏄惁涓� json 鎴� xml
         String ajax = request.getParameter("__ajax");
         return StringUtils.equalsAnyIgnoreCase(ajax, "json", "xml");
     }
 
+    /**
+     * 鑾峰彇瀹㈡埛绔� IP 鍦板潃
+     *
+     * @return 瀹㈡埛绔� IP 鍦板潃
+     */
     public static String getClientIP() {
         return getClientIP(getRequest());
     }
 
     /**
-     * 鍐呭缂栫爜
+     * 瀵瑰唴瀹硅繘琛� URL 缂栫爜
      *
      * @param str 鍐呭
      * @return 缂栫爜鍚庣殑鍐呭
@@ -181,7 +277,7 @@
     }
 
     /**
-     * 鍐呭瑙g爜
+     * 瀵瑰唴瀹硅繘琛� URL 瑙g爜
      *
      * @param str 鍐呭
      * @return 瑙g爜鍚庣殑鍐呭

--
Gitblit v1.9.3