21xrx.com
2025-06-18 06:15:37 Wednesday
文章检索 我的文章 写文章
如何在Java中获取请求端的IP地址
2023-06-15 13:12:23 深夜i     11     0
Java IP地址 ServletRequest对象 JSP页面 Socket

在Java编程中,我们经常需要获取客户端的IP地址,以便进一步处理请求或实现一些操作。然而,从一个请求中获取客户端的IP地址并不是一件简单的事情。接下来我们来看一下如何在Java中获取请求端的IP地址。

一、通过ServletRequest对象获取IP地址

在Java中,我们可以通过ServletRequest对象来获取IP地址,具体实现如下:

public String getIpAddress(HttpServletRequest request) { 
   String ip = request.getHeader("x-forwarded-for"); 
   if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
     ip = request.getHeader("Proxy-Client-IP"); 
   } 
   if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
     ip = request.getHeader("WL-Proxy-Client-IP"); 
   } 
   if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
     ip = request.getHeader("HTTP_CLIENT_IP"); 
   } 
   if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
     ip = request.getHeader("HTTP_X_FORWARDED_FOR"); 
   } 
   if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
     ip = request.getRemoteAddr(); 
   } 
   return ip; 
}

我们可以在servlet doGet 或 doPost 方法中调用 getIpAddress 方法来获取请求端的IP地址。

二、通过JSP页面获取IP地址

在JSP页面中,我们可以通过以下代码获取IP地址:

request.getRemoteHost();

三、通过Socket获取IP地址

如果是通过Socket与服务器通信的话,我们可以通过以下代码获取远程主机的IP地址:

socket.getInetAddress().getHostAddress();

  
  

评论区