サーブレットとサーブレットフィルターの操作
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);
// ...
}
}