クラス AbstractController
java.lang.ObjectSE
org.springframework.context.support.ApplicationObjectSupport
org.springframework.web.context.support.WebApplicationObjectSupport
org.springframework.web.servlet.support.WebContentGenerator
org.springframework.web.servlet.mvc.AbstractController
- 実装されているすべてのインターフェース:
Aware、ApplicationContextAware、ServletContextAware、Controller
- 既知の直属サブクラス
AbstractUrlViewController、ParameterizableViewController、ServletForwardingController、ServletWrappingController
テンプレートメソッドデザインパターンを使用した、コントローラー実装の便利なスーパークラス。
ワークフロー(およびインターフェースで定義されたもの) :
handleRequest()は DispatcherServlet によって呼び出されます- サポートされているメソッドのインスペクション (リクエストメソッドがサポートされていない場合は ServletException)
- セッションが必要な場合は、取得してみてください (ServletException が見つからない場合)
- cacheSeconds プロパティに従って必要に応じてキャッシュヘッダーを設定します
- 抽象メソッド
handleRequestInternal()を呼び出します(オプションで HttpSession の呼び出しを同期します)。これは、クラスを継承して実装し、実際の機能を提供してModelAndViewオブジェクトを返す必要があります。
公開された構成プロパティ(およびインターフェースによって定義されたもの) :
| 名前 | default | 説明 |
| supportedMethods | GET,POST | GET、POST、PUT など、このコントローラーでサポートされるメソッドのコンマ区切り(CSV)リスト |
| requireSession | false | このコントローラーでリクエストを処理できるようにするためにセッションが必要かどうか。これにより、派生コントローラーは、null ポインターを恐れることなく、request.getSession() を呼び出してセッションを取得できるようになります。リクエストの処理中にセッションが見つからない場合、ServletException がスローされます |
| cacheSeconds | -1 | このリクエストに続くレスポンスのキャッシュヘッダーに含める秒数を示します。0(ゼロ)はキャッシュなしのヘッダーを含み、-1(デフォルト)はヘッダーを生成せず、正の数はコンテンツをキャッシュする秒数として示される量を示すヘッダーを生成します |
| synchronizeOnSession | false | 同じクライアントからの呼び出しを直列化するために、handleRequestInternal の呼び出しを HttpSession の周囲で同期する必要があるかどうか。HttpSession がない場合、効果はありません。 |
- 作成者:
- Rod Johnson, Juergen Hoeller, Rossen Stoyanchev
- 関連事項:
フィールドのサマリー
クラス org.springframework.web.servlet.support.WebContentGenerator から継承されたフィールド
HEADER_CACHE_CONTROL, METHOD_GET, METHOD_HEAD, METHOD_POSTクラス org.springframework.context.support.ApplicationObjectSupport から継承されたフィールド
loggerコンストラクターの概要
コンストラクターコンストラクター説明HTTP メソッド GET、HEAD、POST をデフォルトでサポートする新しい AbstractController を作成します。AbstractController(boolean restrictDefaultSupportedMethods) 新しい AbstractController を作成します。メソッドのサマリー
修飾子と型メソッド説明handleRequest(HttpServletRequestEE request, HttpServletResponseEE response) リクエストを処理し、DispatcherServlet がレンダリングする ModelAndView オブジェクトを返します。protected abstract ModelAndViewhandleRequestInternal(HttpServletRequestEE request, HttpServletResponseEE response) テンプレートメソッド。final booleanセッションでコントローラーの実行を同期するかどうかを返します。final voidsetSynchronizeOnSession(boolean synchronizeOnSession) 同じクライアントからの並列呼び出しを直列化するために、セッションでコントローラーの実行を同期する必要がある場合に設定します。クラス org.springframework.web.servlet.support.WebContentGenerator から継承されたメソッド
applyCacheControl, applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkRequest, getAllowHeader, getCacheControl, getCacheSeconds, getSupportedMethods, getVaryByRequestHeaders, isAlwaysMustRevalidate, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, prepareResponse, preventCaching, setAlwaysMustRevalidate, setCacheControl, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseCacheControlNoStore, setUseExpiresHeader, setVaryByRequestHeadersクラス org.springframework.web.context.support.WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContextクラス org.springframework.context.support.ApplicationObjectSupport から継承されたメソッド
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
コンストラクターの詳細
AbstractController
public AbstractController()HTTP メソッド GET、HEAD、POST をデフォルトでサポートする新しい AbstractController を作成します。AbstractController
public AbstractController(boolean restrictDefaultSupportedMethods) 新しい AbstractController を作成します。- パラメーター:
restrictDefaultSupportedMethods- このコントローラーがデフォルトで HTTP メソッド GET、HEAD、POST をサポートする必要がある場合はtrue、制限されていない場合はfalse- 導入:
- 4.3
メソッドの詳細
setSynchronizeOnSession
public final void setSynchronizeOnSession(boolean synchronizeOnSession) 同じクライアントからの並列呼び出しを直列化するために、セッションでコントローラーの実行を同期する必要がある場合に設定します。より具体的には、このフラグが "true" の場合、
handleRequestInternalメソッドの実行は同期されます。利用可能な最適なセッションミューテックスが同期に使用されます。理想的には、これは HttpSessionMutexListener によって公開されるミューテックスです。セッションミューテックスは、セッションのライフタイム全体を通じて同じオブジェクトであることが保証されており、
SESSION_MUTEX_ATTRIBUTE定数で定義されたキーで使用できます。これは、現在のセッションのロックを同期するための安全な参照として機能します。多くの場合、HttpSession 参照自体も、同じアクティブな論理セッションに対する常に同じオブジェクト参照になるため、安全なミューテックスです。ただし、これは異なるサーブレットコンテナー間では保証されません。唯一の 100% 安全な方法は、セッションミューテックスです。
isSynchronizeOnSession
public final boolean isSynchronizeOnSession()セッションでコントローラーの実行を同期するかどうかを返します。handleRequest
@Nullable public ModelAndView handleRequest(HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSE インターフェースからコピーされた説明:Controllerリクエストを処理し、DispatcherServlet がレンダリングする ModelAndView オブジェクトを返します。nullの戻り値はエラーではありません。これは、このオブジェクトがリクエスト処理自体を完了したため、レンダリングする ModelAndView がないことを示しています。- 次で指定:
- インターフェース
ControllerのhandleRequest - パラメーター:
request- 現在の HTTP リクエストresponse- 現在の HTTP レスポンス- 戻り値:
- レンダリングする ModelAndView、または直接処理する場合は
null - 例外:
ExceptionSE- エラーの場合
handleRequestInternal
@Nullable protected abstract ModelAndView handleRequestInternal(HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSE テンプレートメソッド。サブクラスはこれを実装する必要があります。契約はhandleRequestと同じです。