クラス 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 ModelAndView
handleRequestInternal
(HttpServletRequestEE request, HttpServletResponseEE response) テンプレートメソッド。final boolean
セッションでコントローラーの実行を同期するかどうかを返します。final void
setSynchronizeOnSession
(boolean synchronizeOnSession) 同じクライアントからの並列呼び出しを直列化するために、セッションでコントローラーの実行を同期する必要がある場合に設定します。クラス org.springframework.web.servlet.support.WebContentGenerator から継承されたメソッド
applyCacheControl, applyCacheSeconds, checkAndPrepare, checkRequest, getAllowHeader, getCacheControl, getCacheSeconds, getSupportedMethods, getVaryByRequestHeaders, isRequireSession, prepareResponse, setCacheControl, setCacheSeconds, setRequireSession, setSupportedMethods, 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
と同じです。