package com.fdkankan.web.util; import cn.hutool.core.util.StrUtil; import cn.hutool.http.ContentType; import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgentUtil; import com.alibaba.fastjson.JSON; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import org.aspectj.lang.JoinPoint; import org.springframework.http.HttpHeaders; import org.springframework.http.server.reactive.ServerHttpRequest; /** *
* TODO *
* * @author dengsixing * @since 2022/6/9 **/ public class WebUtil { private final static String UNKNOWN = "unknown"; /** * aop中获取请求参数中的参数值 * @param pjp * @param request * @return */ public static String getParameter(String paramName, JoinPoint pjp, HttpServletRequest request){ Object[] args = pjp.getArgs(); String contentType = request.getContentType(); if(contentType.contains(ContentType.JSON.getValue())){ HashMap hashMap = JSON.parseObject(JSON.toJSONString(args[0]), HashMap.class); return (String) hashMap.get(paramName); } return request.getParameter(paramName); } /** * 获取客户端请求终端地址 * @param request 客户端请求request * @return 终端ip地址 */ public static String getIpAddress(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); if(StrUtil.isNotBlank(ip) && UNKNOWN.equalsIgnoreCase(ip)){ if(ip.indexOf(",") != -1){ ip = ip.split(",")[0]; return ip; } } ip = request.getHeader("Proxy-Client-IP"); if(StrUtil.isNotBlank(ip)) return ip; ip = request.getHeader("WL-Proxy-Client-IP"); if(StrUtil.isNotBlank(ip)) return ip; ip = request.getHeader("HTTP-CLIENT-IP"); if(StrUtil.isNotBlank(ip)) return ip; ip = request.getHeader("HTTP-X-FORWARDED-FOR"); if(StrUtil.isNotBlank(ip)) return ip; ip = request.getHeader("X-Real-IP"); if(StrUtil.isNotBlank(ip)) return ip; ip = request.getRemoteAddr(); return ip; } /** *获取浏览器版本 *
* @author dengsixing * @date 2022/8/19 * @param request * @return java.lang.String **/ public static String getBrowser(HttpServletRequest request){ String userAgentStr = request.getHeader("User-Agent"); UserAgent userAgent = UserAgentUtil.parse(userAgentStr); String browserType = userAgent.getBrowser().toString(); String browserVersion = userAgent.getVersion(); String browserFormat = "%s(版本%s)"; return String.format(browserFormat, browserType, browserVersion); } }