提取客户端请求中发送的IP

时间:2012-09-07 09:26:37

标签: java java-ee ip httprequest

我正在阅读“每次请求您的Web应用程序时,客户端的IP也会被发送。所以您需要做的就是过滤请求并且您可以存储IP。” < / p>

如果是这样,我该怎么做?我的意思是什么方法可以告诉我在请求中发送的IP?

1 个答案:

答案 0 :(得分:2)

创建一个实现javax.servlet.Filter的Filter类,并使用ServletRequestgetRemoteAddr()获取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"),但这取决于代理服务器的配置可能有效,也可能无效。