21xrx.com
2024-12-23 00:21:46 Monday
登录
文章检索 我的文章 写文章
如何在Java中获取请求端的IP地址
2023-06-15 13:12:23 深夜i     --     --
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();

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复