java获取登录内网ip地址

Posted 未来。。。one

tags:

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

java获取登录内网ip地址

最近好多小伙伴在和我说怎么java怎么获取登录的ip地址,今天就分享一下我的方法了。

1、直接获取ip地址

//获取request请求
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
//获取IP地址
String ipaddr = request.getRemoteAddr();
if(ipaddr == "0:0:0:0:0:0:0:1"){
   ipaddr ="127.0.0.1";
}
System.out.println(ipaddr);

2、第二种封装成util工具类

public class IPUtil {
    /**
     * 获取ip
     */
    public static String getIp(HttpServletRequest request) {
        if (request == null)
            return "";
        String ip = request.getHeader("X-Requested-For");
        if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Forwarded-For");
        }
        if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        if ("0:0:0:0:0:0:0:1".equals(ip)) {
            return "127.0.0.1";
        }
        return ip;
    }

    public static boolean isLocalHost(String ip) {
        return "127.0.0.1".equals(ip) || "localhost".equals(ip);
    }
}

如果这篇文章帮助了你,记得点个赞哦!!!

以上是关于java获取登录内网ip地址的主要内容,如果未能解决你的问题,请参考以下文章

java获取登录内网ip地址

java获取登录内网ip地址

java代码实现由request请求消息获取远处发送请求的用户主机的内网IP地址和外网IP地址

jquery获取客户端ip地址

java如何获取当前登录ip

怎么实现c#获取ip内网,外网地址?