一、在web站点中可以根据HttpServletRequest对象获取真实的客户机ip
package com.moy.whymoy.test.utils; import javax.servlet.http.HttpServletRequest; import java.util.Objects; /** * [Project]:whymoy <br/> * [Email]:moy25@foxmail.com <br/> * [Date]:2018/3/28 <br/> * [Description]: <br/> * * @author YeXiangYang */ public abstract class IpUtils { /** * 获取ip地址 * * @param request 请求 * @return 返回ip字符串 */ public static String getIpAddress(HttpServletRequest request) { if (Objects.isNull(request)) { return "unknown"; } String ip = request.getHeader("x-forwarded-for"); if (nonValidIp(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (nonValidIp(ip)) { ip = request.getHeader("X-Forwarded-For"); } if (nonValidIp(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (nonValidIp(ip)) { ip = request.getHeader("X-Real-IP"); } if (nonValidIp(ip)) { ip = request.getRemoteAddr(); } return ip; } /** * 是无效的ip地址 * * @param ip ip字符串 * @return 无效的ip地址返回<tt>true</tt> */ public static boolean nonValidIp(String ip) { return ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip); } /** * 是有效的ip地址 * * @param ip ip字符串 * @return 有效的ip地址返回<tt>true</tt> */ public static boolean isValidIp(String ip) { return !nonValidIp(ip); } }
yexiangyang
moyyexy@gmail.com