/**
* 获取访问的IP地址
* @date 2018年11月26日上午11:31:49
* @user : hetao
* @param request
* @return
*/
public String getIpAddr(HttpServletRequest request){
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(ipAddress.equals(\"127.0.0.1\") || ipAddress.equals(\"0:0:0:0:0: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(\",\"));
}
}
return ipAddress;
}

只需要把request的参数传进去就可以拿到IP了。

使用场景:日志记录

收藏 打印