サーブレットとサーブレットフィルターの操作

Spring Cloud Gateway Server MVC は、サーブレット API 上に構築され、サーブレットコンテナーにデプロイされるサーブレットスタック Web アプリケーション用に構築されています。アプリケーションでサーブレットまたはサーブレットフィルターを使用する場合は、それらの順序に注意する必要があります。

サーブレットコンテナーがリクエストパラメーターを処理する方法により、Spring WebMVC アプリケーションがコンテンツ型 application/x-www-form-urlencoded を受信すると、サーブレットコンテナーはそれらをクエリパラメーターと組み合わせて「リクエスト」パラメーターにします。下流のアプリケーション用にフォーム本体を再構築するために、特別な FormFilter Bean が Spring Cloud Gateway サーバー MVC に含まれています。フィルターチェーンが実行される前にリクエストパラメーターを読み取るサーブレットフィルターは、FormFilter の前に並べる必要があります。以下の例を参照してください。

MyFilter.java
import jakarta.servlet.Filter;
import org.springframework.cloud.gateway.server.mvc.filter.FormFilter;
import org.springframework.core.Ordered;

class MyFilter implements Filter, Ordered {

    @Override
    public int getOrder() {
        return FormFilter.FORM_FILTER_ORDER - 1;
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
            throws IOException, ServletException {
        // ...
        filterChain.doFilter(request, response);
        // ...
    }
}