public abstract class AbstractController extends WebContentGenerator implements Controller
ワークフロー(およびインターフェースによって定義されたワークフロー ):
handleRequest() は DispatcherServlet によって呼び出されます 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 がない場合、効果はありません。 |
WebContentInterceptorHEADER_CACHE_CONTROL, METHOD_GET, METHOD_HEAD, METHOD_POSTlogger| コンストラクターと説明 |
|---|
AbstractController()HTTP メソッド GET、HEAD、POST をデフォルトでサポートする新しい AbstractController を作成します。 |
AbstractController(boolean restrictDefaultSupportedMethods) 新しい AbstractController を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
ModelAndView | handleRequest(HttpServletRequestEE request, HttpServletResponseEE response) リクエストを処理し、DispatcherServlet がレンダリングする ModelAndView オブジェクトを返します。 |
protected abstract ModelAndView | handleRequestInternal(HttpServletRequestEE request, HttpServletResponseEE response) テンプレートメソッド。 |
boolean | isSynchronizeOnSession() セッションでコントローラーの実行を同期するかどうかを返します。 |
void | setSynchronizeOnSession(boolean synchronizeOnSession) 同じクライアントからの並列呼び出しを直列化するために、セッションでコントローラーの実行を同期する必要がある場合に設定します。 |
applyCacheControl, applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, checkRequest, getAllowHeader, getCacheControl, getCacheSeconds, getSupportedMethods, getVaryByRequestHeaders, isAlwaysMustRevalidate, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, prepareResponse, preventCaching, setAlwaysMustRevalidate, setCacheControl, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseCacheControlNoStore, setUseExpiresHeader, setVaryByRequestHeadersgetServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContextgetApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContextcloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic AbstractController()
public AbstractController(boolean restrictDefaultSupportedMethods)
restrictDefaultSupportedMethods - このコントローラーがデフォルトで HTTP メソッド GET、HEAD、POST をサポートする必要がある場合は true、制限されていない場合は false public final void setSynchronizeOnSession(boolean synchronizeOnSession)
より具体的には、このフラグが "true" の場合、handleRequestInternal メソッドの実行は同期されます。利用可能な最適なセッションミューテックスが同期に使用されます。理想的には、これは HttpSessionMutexListener によって公開されるミューテックスです。
セッションミューテックスは、セッションのライフタイム全体を通じて同じオブジェクトであることが保証されており、SESSION_MUTEX_ATTRIBUTE 定数で定義されたキーで使用できます。これは、現在のセッションのロックを同期するための安全な参照として機能します。
多くの場合、HttpSession 参照自体も、同じアクティブな論理セッションに対する常に同じオブジェクト参照になるため、安全なミューテックスです。ただし、これは異なるサーブレットコンテナー間では保証されません。唯一の 100% 安全な方法は、セッションミューテックスです。
public final boolean isSynchronizeOnSession()
public ModelAndView handleRequest(HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSE
Controllernull の戻り値はエラーではありません。これは、このオブジェクトがリクエスト処理自体を完了したため、レンダリングする ModelAndView がないことを示しています。Controller の handleRequest request - 現在の HTTP リクエスト response - 現在の HTTP レスポンス null ExceptionSE - エラーの場合 protected abstract ModelAndView handleRequestInternal(HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSE
handleRequest と同じです。