使用接口ServletRequest中的方法getRemoteAddr()或接口HttpServletRequest中的方法getHeaders():
HttpServletRequest httpRequest = (HttpServletRequest) request;String userIpAddress = httpRequest.getHeader("X-Forwarded-For");使用方法getRemoteAddr有一个警告:
当然,您可以使用该方法,并且在一般情况下,您将获得客户端的IP。但是,如果用户位于代理之后,则该方法无用。在这种情况下,您将获得代理服务器的IP地址,而不是客户端。但是代理可以在特殊的
HTTP标头中包含发出请求的客户端IP
。因此要检索real-client-IP调用方法
getHeader("X-Forwarded-For")。JSP中的示例用法:
在使用JSTL的会话中使用IP地址的设置值:
<c:set var="userIp" value="${requestScope.header('x-forwarded-for')}" scope="session" />然后在方便的位置从会话中获取此值。
在JSP中,您可以将
<c:out value="${sessionScope.userIp}"/>或在servlet中用作session.getAttribute('userIp');请阅读文档:
java.lang.String getRemoteAddr() 返回发送请求的客户端或 最后一个代理 的Internet协议(IP)地址。



