public class MultipartFilter extends OncePerRequestFilter
MultipartResolver
を介してマルチパートリクエストを解決するサーブレットフィルター。ルート Web アプリケーションコンテキスト内。Spring のルート Web アプリケーションコンテキストで MultipartResolver を検索します。web.xml
で "multipartResolverBeanName" フィルター init-param をサポートします。デフォルトの Bean 名は "filterMultipartResolver" です。
MultipartResolver Bean が見つからない場合、このフィルターは、web.xml
の multipart-config セクションに基づいて、Servlet 3.0 のデフォルトの MultipartResolver: StandardServletMultipartResolver
にフォールバックします。ただし、現時点では、サーブレット仕様では、サーブレットでマルチパート構成を有効にする方法のみが定義されているため、サーブレットコンテナーが Tomcat の "allowCasualMultipartParsing" プロパティなどの回避策を提供しない限り、フィルターでマルチパートリクエストを処理することはおそらく不可能です。
MultipartResolver ルックアップはカスタマイズ可能: たとえば、Spring Web アプリケーションコンテキストを使用していない場合、カスタム MultipartResolver インスタンスを使用するには、このフィルターの lookupMultipartResolver
メソッドをオーバーライドします。ルックアップメソッドは、呼び出しごとに新しい MultipartResolver インスタンスを作成するのではなく、ビルド済みインスタンスへの参照を返すことに注意してください。
メモ: このフィルターは、DispatcherServlet の MultipartResolver サポートを使用する代わりに使用できます。たとえば、Spring の Web MVC を使用しないカスタム Web ビューを持つ Web アプリケーション、または Spring MVC DispatcherServlet (例: HiddenHttpMethodFilter
) の前に適用されるカスタムフィルター用です。いずれにしても、このフィルターはサーブレット固有のマルチパート解決と組み合わせてはいけません。
setMultipartResolverBeanName(java.lang.String)
, lookupMultipartResolver(javax.servlet.http.HttpServletRequest)
, MultipartResolver
, DispatcherServlet
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | DEFAULT_MULTIPART_RESOLVER_BEAN_NAME マルチパートリゾルバー Bean のデフォルト名。 |
ALREADY_FILTERED_SUFFIX
logger
コンストラクターと説明 |
---|
MultipartFilter() |
修飾子と型 | メソッドと説明 |
---|---|
protected void | doFilterInternal(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) このフィルターの MultipartResolver を介してマルチパートリクエストを確認し、必要に応じて元のリクエストを MultipartHttpServletRequest でラップします。 |
protected StringSE | getMultipartResolverBeanName() Spring のルートアプリケーションコンテキストから取得する MultipartResolver の Bean 名を返します。 |
protected MultipartResolver | lookupMultipartResolver() ルート Web アプリケーションコンテキストで MultipartResolver Bean を探します。 |
protected MultipartResolver | lookupMultipartResolver(HttpServletRequestEE request) 現在の HTTP リクエストを引数として、このフィルターが使用する MultipartResolver を検索します。 |
void | setMultipartResolverBeanName(StringSE multipartResolverBeanName) MultipartResolver の Bean 名を設定して、Spring のルートアプリケーションコンテキストから取得します。 |
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, shouldNotFilterAsyncDispatch, shouldNotFilterErrorDispatch
addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setMultipartResolverBeanName(StringSE multipartResolverBeanName)
protected StringSE getMultipartResolverBeanName()
protected void doFilterInternal(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) throws ServletExceptionEE, IOExceptionSE
フィルターチェーンのそれ以降のすべての要素(最も重要なのはサーブレット)は、マルチパートの場合に適切なパラメーター抽出の恩恵を受け、必要に応じて MultipartHttpServletRequest にキャストできます。
OncePerRequestFilter
の doFilterInternal
ServletExceptionEE
IOExceptionSE
protected MultipartResolver lookupMultipartResolver(HttpServletRequestEE request)
デフォルトの実装は、引数なしで lookupMultipartResolver
に委譲します。
lookupMultipartResolver()
protected MultipartResolver lookupMultipartResolver()
これは、たとえば Spring Web アプリケーションコンテキストを使用しない場合など、カスタム MultipartResolver インスタンスを使用するためにオーバーライドできます。