java - 在Spring MVC中获取客户端机器的IP地址

标签 java spring-mvc servlets httprequest

我有一个 java spring MVC Web 应用程序,我正在尝试获取正在访问该应用程序的客户端计算机的 IP 地址。我尝试了下面所示的代码,

InetAddress addr = InetAddress.getLocalHost();
String ipAddr = addr.getHostAddress();

但这会返回本地主机的 IP 地址。 我还尝试了一些在网上找到的其他建议,如下所示:

String remoteAddr = "";
if (request != null) {
  remoteAddr = request.getHeader("X-FORWARDED-FOR");
  if (remoteAddr == null || "".equals(remoteAddr)) {
      remoteAddr = request.getRemoteAddr();
  }
}

这也没有提供正确的 IP 地址。我也尝试过以下方法,但没有任何效果对我有用: https://www.mkyong.com/java/how-to-get-client-ip-address-in-java/

what is the right way to get request's ip

没有给我正确的 IP 地址。有没有任何解决方案可以让我尝试获取正在访问我的应用程序的计算机的正确 IP 地址。

最佳答案

您必须从请求来源处读取请求,试试这个

public void readIp(HttpServletRequest request,HttpServletResponse response){
    String ip = request.getRemoteAddr();
    System.out.println("ip: "+ip);
}

关于java - 在Spring MVC中获取客户端机器的IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43995730/

相关文章:

java - 奇怪的 opengl es 2 on android 错误

java - While 循环 boolean 值重新赋值

java - Spring MVC 将请求从 Cp1252 编码为 UTF-8

apache - Cookie 路径总是使用 Apache Tomcat 7 而不是 Tomcat 9 引用

java - 在Tomcat eclipse上部署简单的Servlet

java - 通过单击两个不同的按钮来调用同一个 servlet 以从同一个数据库获取数据

java - 将二维数组添加到一维数组

java - If 语句检查数字的最后一位数字

spring - 为什么这个 Spring 应用程序中的过滤器中的 Autowiring bean 为空?

java - 使用 Spring @Controller ModelAndView 将 java 变量传递给 jsp