如何确定访问我的网站的IP地址?

Pra*_*eek 8 java url jsp servlets java-ee

我有一个Web应用程序,为此我想捕获访问我的网站的客户端的IP地址,以便我可以知道访问该应用程序的区域最多.我Java EE在我的申请中使用.

如果我们谈论标题以及何时request从最终用户发送,可能会有一些解决方案.

kap*_*and 15

使用接口ServletRequest中的方法getRemoteAddr()或方法getHeaders()形式接口HttpServletRequest:

HttpServletRequest httpRequest = (HttpServletRequest) request;
String userIpAddress = httpRequest.getHeader("X-Forwarded-For");
Run Code Online (Sandbox Code Playgroud)

使用getRemoteAddr方法有一个注意事项:

当然你可以使用这种方法,一般情况下你会获得客户端的IP.但是,如果用户位于代理后面,则该方法无用.在这种情况下,您将获得代理服务器的IP地址,而不是客户端.但是代理可以在特殊HTTP报头中包括请求客户端IP .所以要检索真正的客户端IP调用方法getHeader("X-Forwarded-For").

JSP中的示例用法:

使用JSTL在会话中使用IP地址的设置值:

<c:set var="userIp" value="${requestScope.header('x-forwarded-for')}" scope="session" />
Run Code Online (Sandbox Code Playgroud)

然后在方便的地方从会话中获取此值.

在JSP中,您可以使用<c:out value="${sessionScope.userIp}" />或在servlet中使用session.getAttribute('userIp');

请阅读文档:

java.lang.String getRemoteAddr()返回发送请求的客户端或最后一个代理的Internet协议(IP)地址.