Java 如何在Serverlet请求中获取客户端系统Ip地址
但是我没有得到Ip地址我得到的是相同的127.0.0.1每个请求的这个值不同的系统可以告诉我如何获得Ip地址。您可以这样做:Java 如何在Serverlet请求中获取客户端系统Ip地址,java,servlets,Java,Servlets,但是我没有得到Ip地址我得到的是相同的127.0.0.1每个请求的这个值不同的系统可以告诉我如何获得Ip地址。您可以这样做: @Autowired private HttpServletRequest request; 使HttpServletRequest自动连线,使其可用于控制器的任何功能: @GET @Produces(MediaType.APPLICATION_JSON) public Response login(@Context HttpHe
@Autowired
private HttpServletRequest request;
使HttpServletRequest自动连线,使其可用于控制器的任何功能:
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response login(@Context HttpHeaders headers, @Context HttpServletRequest request) {
System.out.println(getClientIpAddress(request));
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
System.out.println("ip:" + ipAddress);
return new LoginUtils().performLogin(headers.getRequestHeaders());
}
public static String getClientIpAddress(HttpServletRequest request) {
for (String header : HEADERS_TO_TRY) {
String ip = request.getHeader(header);
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
}
return request.getRemoteAddr();
}
然后在控制器中使用它,如下所示:
@Autowired
private HttpServletRequest request;
您是否从本地网络访问服务器?尝试远程访问它(移动网络上的电话或其他东西),看看这是否会改变视角。我做了同样的事情,但在这种情况下,我也得到127.0.0.1我想得到网络Ip地址,而不是主机地址