本文共 1866 字,大约阅读时间需要 6 分钟。
IpUtil工具类如下:
package com.xiaobu.base.utils;import javax.servlet.http.HttpServletRequest;/** * @author xiaobu * @version JDK1.8.0_171 * @date on 2018/11/7 10:19 * @description V1.0 */public class IpUtils { /** * 获取访问用户的客户端IP(适用于公网与局域网). */ public static String getIpAddr(final HttpServletRequest request) throws Exception { if (request == null) { throw (new Exception("getIpAddr method HttpServletRequest Object is null")); } String ipString = request.getHeader("X-Real-IP"); if (isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) { ipString = request.getHeader("X-Forwarded-For"); } if (isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) { ipString = request.getHeader("Proxy-Client-IP"); } if (isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) { ipString = request.getHeader("WL-Proxy-Client-IP"); } if (isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) { ipString = request.getHeader("X-Real-IP"); } if (isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) { ipString = request.getRemoteAddr(); } // 多个路由时,取第一个非unknown的ip final String[] arr = ipString.split(","); for (final String str : arr) { if (!"unknown".equalsIgnoreCase(str)) { ipString = str; break; } } return ipString; } /*** * @author xiaobu * @date 2018/11/7 10:41 * @param ip ip地址 * @return boolean * @descprition 判断IP地址是否有效 * @version 1.0 */ public static boolean isBlank(String ip){ return ip == null || ip.trim().length() == 0; }}
JS获取IP地址可以访问以下两个网站:
http://pv.sohu.com/cityjson?ie=utf-8http://ip.taobao.com/service/getIpInfo2.php?ip=myip
转载地址:http://qugai.baihongyu.com/