获取IP工具类
/** * 获取请求IP * * @param request * @return * @throws Exception */ public static String getIpAddr(HttpServletRequest request) throws Exception { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } // 如果是多级代理,那么取第一个ip为客户端ip if (ip != null && ip.contains(",")) { ip = ip.substring(0, ip.indexOf(",")).trim(); } return ip; } /** * 正则获取字符串中的ip地址 * @param ipstring * @return */ public static List<String> getIps(String ipstring) { String regEx = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"; List<String> ips = new ArrayList<String>(); Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(ipstring); while (m.find()) { String result = m.group(); ips.add(result); return ips; } return ips; }