WebUtil.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package com.fdkankan.web.util;
  2. import cn.hutool.core.util.StrUtil;
  3. import cn.hutool.http.ContentType;
  4. import cn.hutool.http.useragent.UserAgent;
  5. import cn.hutool.http.useragent.UserAgentUtil;
  6. import com.alibaba.fastjson.JSON;
  7. import java.util.HashMap;
  8. import javax.servlet.http.HttpServletRequest;
  9. import org.aspectj.lang.JoinPoint;
  10. import org.springframework.http.HttpHeaders;
  11. import org.springframework.http.server.reactive.ServerHttpRequest;
  12. /**
  13. * <p>
  14. * TODO
  15. * </p>
  16. *
  17. * @author dengsixing
  18. * @since 2022/6/9
  19. **/
  20. public class WebUtil {
  21. private final static String UNKNOWN = "unknown";
  22. /**
  23. * aop中获取请求参数中的参数值
  24. * @param pjp
  25. * @param request
  26. * @return
  27. */
  28. public static String getParameter(String paramName, JoinPoint pjp, HttpServletRequest request){
  29. Object[] args = pjp.getArgs();
  30. String contentType = request.getContentType();
  31. if(contentType.contains(ContentType.JSON.getValue())){
  32. HashMap hashMap = JSON.parseObject(JSON.toJSONString(args[0]), HashMap.class);
  33. return (String) hashMap.get(paramName);
  34. }
  35. return request.getParameter(paramName);
  36. }
  37. /**
  38. * 获取客户端请求终端地址
  39. * @param request 客户端请求request
  40. * @return 终端ip地址
  41. */
  42. public static String getIpAddress(HttpServletRequest request) {
  43. String ip = request.getHeader("X-Forwarded-For");
  44. if(StrUtil.isNotBlank(ip) && UNKNOWN.equalsIgnoreCase(ip)){
  45. if(ip.indexOf(",") != -1){
  46. ip = ip.split(",")[0];
  47. return ip;
  48. }
  49. }
  50. ip = request.getHeader("Proxy-Client-IP");
  51. if(StrUtil.isNotBlank(ip)) return ip;
  52. ip = request.getHeader("WL-Proxy-Client-IP");
  53. if(StrUtil.isNotBlank(ip)) return ip;
  54. ip = request.getHeader("HTTP-CLIENT-IP");
  55. if(StrUtil.isNotBlank(ip)) return ip;
  56. ip = request.getHeader("HTTP-X-FORWARDED-FOR");
  57. if(StrUtil.isNotBlank(ip)) return ip;
  58. ip = request.getHeader("X-Real-IP");
  59. if(StrUtil.isNotBlank(ip)) return ip;
  60. ip = request.getRemoteAddr();
  61. return ip;
  62. }
  63. /**
  64. * <p>
  65. 获取浏览器版本
  66. * </p>
  67. * @author dengsixing
  68. * @date 2022/8/19
  69. * @param request
  70. * @return java.lang.String
  71. **/
  72. public static String getBrowser(HttpServletRequest request){
  73. String userAgentStr = request.getHeader("User-Agent");
  74. UserAgent userAgent = UserAgentUtil.parse(userAgentStr);
  75. String browserType = userAgent.getBrowser().toString();
  76. String browserVersion = userAgent.getVersion();
  77. String browserFormat = "%s(版本%s)";
  78. return String.format(browserFormat, browserType, browserVersion);
  79. }
  80. }