| package com.ruoyi.common.core.utils; | 
|   | 
|   | 
| import org.springframework.web.context.request.RequestContextHolder; | 
| import org.springframework.web.context.request.ServletRequestAttributes; | 
|   | 
| import javax.servlet.http.Cookie; | 
| import javax.servlet.http.HttpServletRequest; | 
| import javax.servlet.http.HttpServletResponse; | 
| import javax.servlet.http.HttpSession; | 
| import java.util.HashMap; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * web工具类 | 
|  * | 
|  * @author liheng | 
|  */ | 
| public final class WebUtils extends org.springframework.web.util.WebUtils { | 
|   | 
|     /** | 
|      * 当前请求 | 
|      */ | 
|     public static HttpServletRequest request() { | 
|         return contextHolder() == null ? null : contextHolder().getRequest(); | 
|     } | 
|   | 
|     /** | 
|      * 当前响应 | 
|      */ | 
|     public static HttpServletResponse response() { | 
|         return contextHolder() == null ? null : contextHolder().getResponse(); | 
|     } | 
|   | 
|     /** | 
|      * 当前session | 
|      */ | 
|     public static HttpSession session() { | 
|         return request() == null ? null : request().getSession(); | 
|     } | 
|   | 
|     /** | 
|      * 当前ServletRequest | 
|      */ | 
|     public static ServletRequestAttributes contextHolder() { | 
|         return (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); | 
|     } | 
|   | 
|     /** | 
|      * 判断请求是否为 AJAX | 
|      * | 
|      * @param request 当前请求 | 
|      */ | 
|     public static boolean isAjax(HttpServletRequest request) { | 
|         return "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); | 
|     } | 
|   | 
|     /** | 
|      * 获取操作系统,浏览器及浏览器版本信息 | 
|      * | 
|      * @param request | 
|      * @return | 
|      */ | 
|     public static Map<String, String> getOsAndBrowserInfo(HttpServletRequest request) { | 
|         Map<String, String> map = new HashMap<>(2); | 
|         String browserDetails = request.getHeader("User-Agent"); | 
|         String userAgent = browserDetails; | 
|         String user = userAgent.toLowerCase(); | 
|   | 
|         String os = ""; | 
|         String browser = ""; | 
|         //=================OS Info======================= | 
|         if (userAgent.toLowerCase().contains("windows")) { | 
|             os = "Windows"; | 
|         } else if (userAgent.toLowerCase().contains("mac")) { | 
|             os = "Mac"; | 
|         } else if (userAgent.toLowerCase().contains("x11")) { | 
|             os = "Unix"; | 
|         } else if (userAgent.toLowerCase().contains("android")) { | 
|             os = "Android"; | 
|         } else if (userAgent.toLowerCase().contains("iphone")) { | 
|             os = "IPhone"; | 
|         } else { | 
|             os = "UnKnown, More-Info: " + userAgent; | 
|         } | 
|         //===============Browser=========================== | 
|         if (user.contains("edge")) { | 
|             browser = (userAgent.substring(userAgent.indexOf("Edge")).split(" ")[0]).replace("/", "-"); | 
|         } else if (user.contains("msie")) { | 
|             String substring = userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0]; | 
|             browser = substring.split(" ")[0].replace("MSIE", "IE") + "-" + substring.split(" ")[1]; | 
|         } else if (user.contains("safari") && user.contains("version")) { | 
|             browser = (userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0] | 
|                     + "-" + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1]; | 
|         } else if (user.contains("opr") || user.contains("opera")) { | 
|             if (user.contains("opera")) { | 
|                 browser = (userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0] | 
|                         + "-" + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1]; | 
|             } else if (user.contains("opr")) { | 
|                 browser = ((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-")) | 
|                         .replace("OPR", "Opera"); | 
|             } | 
|         } else if (user.contains("chrome")) { | 
|             browser = (userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0]).replace("/", "-"); | 
|         } else if ((user.contains("mozilla/7.0")) || (user.contains("netscape6")) || | 
|                 (user.contains("mozilla/4.7")) || (user.contains("mozilla/4.78")) || | 
|                 (user.contains("mozilla/4.08")) || (user.contains("mozilla/3"))) { | 
|             browser = "Netscape-?"; | 
|         } else if (user.contains("firefox")) { | 
|             browser = (userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-"); | 
|         } else if (user.contains("rv")) { | 
|             String IEVersion = (userAgent.substring(userAgent.indexOf("rv")).split(" ")[0]).replace("rv:", "-"); | 
|             browser = "IE" + IEVersion.substring(0, IEVersion.length() - 1); | 
|         } else { | 
|             browser = "UnKnown, More-Info: " + userAgent; | 
|         } | 
|         map.put("os", os); | 
|         map.put("browser", browser); | 
|         return map; | 
|     } | 
|   | 
|     /** | 
|      * 读取cookie | 
|      * | 
|      * @param name cookie name | 
|      * @return cookie value | 
|      */ | 
|     public String getCookieVal(String name) { | 
|         return getCookieVal(request(), name); | 
|     } | 
|   | 
|     /** | 
|      * 读取cookie | 
|      * | 
|      * @param request HttpServletRequest | 
|      * @param name    cookie name | 
|      * @return cookie value | 
|      */ | 
|     public String getCookieVal(HttpServletRequest request, String name) { | 
|         Cookie cookie = getCookie(request, name); | 
|         return cookie != null ? cookie.getValue() : null; | 
|     } | 
|   | 
|     /** | 
|      * 清除 某个指定的cookie | 
|      * | 
|      * @param response HttpServletResponse | 
|      * @param key      cookie key | 
|      */ | 
|     public void removeCookie(HttpServletResponse response, String key) { | 
|         setCookie(response, key, null, 0); | 
|     } | 
|   | 
|     /** | 
|      * 设置cookie | 
|      * | 
|      * @param response        HttpServletResponse | 
|      * @param name            cookie name | 
|      * @param value           cookie value | 
|      * @param maxAgeInSeconds maxage | 
|      */ | 
|     public void setCookie(HttpServletResponse response, String name, String value, int maxAgeInSeconds) { | 
|         Cookie cookie = new Cookie(name, value); | 
|         cookie.setPath("/"); | 
|         cookie.setMaxAge(maxAgeInSeconds); | 
|         //cookie.setHttpOnly(true); | 
|         response.addCookie(cookie); | 
|     } | 
| } |