-1

「Webアプリケーションへのすべてのリクエストで、クライアントのIPも送信されます。したがって、必要なのは、リクエストをフィルター処理するだけで、IPを保存できます。」と読んでいました。

もしそうなら、どうすればこれを行うことができますか?リクエストで送信されたIPを教えてくれる方法は何ですか?

4

1 に答える 1

2

を実装する Filter クラスを作成し、次を使用し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 に答える