在Jsp页面中获取客户端的IP地址

时间:2012-10-18 15:56:56

标签: java jsp

我想在我的jsp页面中获取客户端的IP地址,并希望存储在我的数据库中。

我在Jsp页面中使用以下代码来填充IP地址,但它显示的是服务器IP地址。

 <input type="hidden" name="ipaddress" value="<%=request.getRemoteAddr()%>"/> 

2 个答案:

答案 0 :(得分:9)

通常情况下,方法ServletRequest.getRemoteAddr()(或getRemoteHost()getRemotePort())应返回实际客户端的详细信息。 但是,如果它通过代理或不同的servlet引擎路由,你将获得这些机器的IP。要解决这些问题,您可以尝试以下操作

request.getHeader("VIA")             --> Gateway   
request.getHeader("X-FORWARDED-FOR")--> IPaddress

但是如果请求直接来自客户端,则可能返回null。您可以通过一些附加条件来处理这种情况,以获取有效数据。

答案 1 :(得分:1)

尝试使用request对象从服务器端获取客户端IP地址绝不是一种可靠的方法。

最可靠的方法往往是在客户端执行,使用ActiveX,Applet或Javascript等等。然而,这也带来了一些挑战。检查this question的答案,以便了解您的反对意见(This is my prefered answer from that