我正在阅读“每次请求您的Web应用程序时,客户端的IP也会被发送。所以您需要做的就是过滤请求并且您可以存储IP。” < / p>
如果是这样,我该怎么做?我的意思是什么方法可以告诉我在请求中发送的IP?
答案 0 :(得分:2)
创建一个实现javax.servlet.Filter
的Filter类,并使用ServletRequest
从getRemoteAddr()
获取IP:
public final class ExtractIpFilter implements Filter {
private FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void destroy() {
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
String ip = request.getRemoteAddr();
// do something with the IP
}
}
如果您的客户端位于代理服务器后面,请尝试使用request.getHeader("x-forwarded-for")
,但这取决于代理服务器的配置可能有效,也可能无效。