com.gitee.cliveyuan.tools.web.IpTools Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-tools Show documentation
Show all versions of java-tools Show documentation
Some commonly used methods in java
package com.gitee.cliveyuan.tools.web;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
/**
* ip 工具
*
* @author clive
* Created on 2018/07/30
* @since 1.0
*/
public class IpTools {
private static final Logger logger = LoggerFactory.getLogger(IpTools.class);
/**
* 获取访问者ip
*
* @param request
*/
public static String getClientIp(HttpServletRequest request) {
try {
String ipAddress = request.getHeader("x-forwarded-for");
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
if ("127.0.0.1".equals(ipAddress)
|| "0:0:0:0:0:0:0:1".equals(ipAddress)
|| "localhost".equals(ipAddress)) {
//根据网卡取本机配置的IP
ipAddress = InetAddress.getLocalHost().getHostAddress();
}
}
//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ipAddress != null && ipAddress.length() > 15) { //"***.***.***.***".length() = 15
if (ipAddress.indexOf(",") > 0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
}
}
return ipAddress;
} catch (Exception e) {
logger.error("getClientIp Exception", e);
return null;
}
}
}