Java获取登录用户的IP地址示例代码

 更新时间:2023年05月10日 09:38:50   作者:一个天蝎座的程序猿  
在开发中我们经常需要获取用户IP地址,通过地址来实现一些功能,下面这篇文章主要给大家介绍了关于Java获取登录用户的IP地址的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

示例代码如下

package com.audaque.util;
 
import java.net.InetAddress;
import java.net.UnknownHostException;
 
import javax.servlet.http.HttpServletRequest;
 
public class GetIp {
	 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;   
	    }
}

请求地址:

public class HttpContextUtil {
    private HttpContextUtil(){
    }
    //获取HttpServletRequest请求
    public static HttpServletRequest getHttpServletRequest() {
        return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
    }
}

调用

        sysLog.setOperationTime(LocalDateTimeUtil.getCurrentDatetime());
        //获取用户名
        sysLog.setUsername(UserUtil.get("username", String.class));
        //获取用户ip地址
        HttpServletRequest request = HttpContextUtil.getHttpServletRequest();
        sysLog.setIp(IPUtil.getIpAddr(request));

总结

到此这篇关于Java获取登录用户的IP地址的文章就介绍到这了,更多相关Java获取登录用户IP地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring-webflux 响应式编程的实例详解

    Spring-webflux 响应式编程的实例详解

    Spring 提供了两个并行堆栈,一种是基于带有 Spring MVC 和 Spring Data 结构的 Servlet API,另一个是完全反应式堆栈,它利用了 Spring WebFlux 和 Spring Data 的反应式存储库,这篇文章主要介绍了Spring-webflux 响应式编程,需要的朋友可以参考下
    2022-09-09
  • Gradle使用Maven仓库的方法

    Gradle使用Maven仓库的方法

    本篇文章主要介绍了Gradle使用Maven仓库的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 安卓系统中实现摇一摇画面振动效果的方法

    安卓系统中实现摇一摇画面振动效果的方法

    这篇文章主要介绍了安卓系统中实现摇一摇画面振动效果的方法,调用Android SDK中的SensorEventListener接口,需要的朋友可以参考下
    2015-07-07
  • maven自动将源码打包并发布的实现步骤

    maven自动将源码打包并发布的实现步骤

    maven-source-plugin 提供项目自动将源码打包并发布的功能,在需要发布源码项目的 pom.xml 文件中添加即可,本文就来介绍一下如何设置,感兴趣的可以了解一下
    2023-11-11
  • java中Scanner.next()和Scanner.nextLine的区别图文详解

    java中Scanner.next()和Scanner.nextLine的区别图文详解

    使用java语言编程,最常用的输入就是使用Scanner了,它的构造很简单,这篇文章主要给大家介绍了关于java中Scanner.next()和Scanner.nextLine区别的相关资料,需要的朋友可以参考下
    2024-02-02
  • Java注解简单使用实例解析

    Java注解简单使用实例解析

    这篇文章主要介绍了Java注解简单使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • java生成指定范围随机数的多种代码

    java生成指定范围随机数的多种代码

    今天在写代码的时候需要用到一个生成指定范围随机数的函数,百度了一下,发现了很多种方法,这里简单为大家整理一下,方便需要的朋友
    2017-08-08
  • Spring HandlerInterceptor实现原理代码解析

    Spring HandlerInterceptor实现原理代码解析

    这篇文章主要介绍了Spring HandlerInterceptor实现原理代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Mybatis注解方式@Insert的用法

    Mybatis注解方式@Insert的用法

    这篇文章主要介绍了Mybatis注解方式@Insert的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 深入理解Spring AOP

    深入理解Spring AOP

    这篇文章主要介绍了深入理解Spring AOP,详细的介绍了spring aop的具体实现与理论
    2017-01-01

最新评论