java获取客户端的IP地址工具类

Posted 向天再借500年V

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java获取客户端的IP地址工具类相关的知识,希望对你有一定的参考价值。

java获取客户端的IP地址工具类

import java.net.InetAddress;
import java.net.UnknownHostException;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

public class IpUtil 
	
	public static String getIpAddr() 
		ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
		HttpServletRequest request = (HttpServletRequest) attrs.getRequest();
		String ipAddress = null;
		try 
			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 (ipAddress.equals("127.0.0.1")) 
					// 根据网卡取本机配置的IP
					InetAddress inet = null;
					try 
						inet = InetAddress.getLocalHost();
					 catch (UnknownHostException e) 
						e.printStackTrace();
					
					ipAddress = inet.getHostAddress();
				
			
			// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
			if (ipAddress != null && ipAddress.length() > 15)  // "***.***.***.***".length()
				// = 15
				if (ipAddress.indexOf(",") > 0) 
					ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
				
			
		 catch (Exception e) 
			ipAddress = "";
		
		// ipAddress = this.getRequest().getRemoteAddr();
		return ipAddress;
	

以上是关于java获取客户端的IP地址工具类的主要内容,如果未能解决你的问题,请参考以下文章

java怎么获取客户端的请求信息

java 获取客户端ip地址

java servlet获取客户端IP

Java获取请求客户端的真实IP地址

java 获取客户端的ip地址

Java获取客户端的IP地址