-1

我正在阅读“对于您的 Web 应用程序的每个请求,也会发送客户端的 IP。所以您需要做的就是过滤请求并存储 IP。”

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

4

1 回答 1

2

创建一个实现的过滤器类,并使用以下方法javax.servlet.Filter获取 IP :ServletRequestgetRemoteAddr()

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"),尽管这可能会或可能不会工作,具体取决于代理的配置。

于 2012-09-07T09:30:22.180 回答