String ipAddress = request.getRemoteAddr();

在上面的代码里使用,request.getRemoteAddr()是Java Servlet中用来获取客户端IP地址的方法。但是,如果你是在一个有代理服务器或负载均衡器的网络环境中,这个方法可能会返回代理服务器或负载均衡器的IP地址,而不是最终用户的IP地址。这是因为请求实际上是从代理服务器或负载均衡器发送的。

为了获取最终用户的真实IP地址,你可能需要检查'X-Forwarded-For' HTTP头。这个头通常被设置为客户端的真实IP地址,当请求通过代理服务器或负载均衡器传递时。

下面是一个工具类,说明如何在Java Servlet中获取最终用户的IP地址:

import javax.servlet.http.HttpServletRequest;

public class IPUtils {

    public static String getClientIP(HttpServletRequest request) {
        String ipAddress = request.getHeader("X-Forwarded-For");

        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("RemoteAddr");
        }

        // 如果使用了代理,获取第一个非unknown的IP地址
        if (ipAddress != null && ipAddress.contains(",")) {
            ipAddress = ipAddress.split(",")[0].trim();
        }

        return ipAddress;
    }

}