Package nablarch.fw.web.post
Class PostResubmitPreventHandler
java.lang.Object
nablarch.fw.web.post.PostResubmitPreventHandler
- All Implemented Interfaces:
Handler<HttpRequest,
,HttpResponse> HttpRequestHandler
Deprecated.
アプリケーションで実装したほうが分かりやすく簡単に実装できるため、POST再送信を防止するには業務アクションにてリダイレクトのレスポンスを返すことで実現すること。
POST再送信防止ハンドラ。
本ハンドラでは、POSTで受け付けたリクエストに対して、
リダイレクトを使用し、再度リクエストを受け付けることで、
ブラウザの戻るボタンによるPOST再送信を防止する。
リダイレクト後のGETリクエストが複数送信された場合には、
※複数送信されたリクエストのリクエストIDが、マッピング設定のキーから始まっている場合その値を遷移先とする。 リクエストIDが複数のキーから始まっている場合は、最も長いキーに対応する値を遷移先にする。
以下にマッピング例を示す。
HttpErrorResponse
を送出する。
HTTPステータスコードには、BadRequestであることを示す400
を設定し、
遷移先のパスにはsetForwardPathMapping(Map)
で設定されたパスマッピングを元に設定する。※複数送信されたリクエストのリクエストIDが、マッピング設定のキーから始まっている場合その値を遷移先とする。 リクエストIDが複数のキーから始まっている場合は、最も長いキーに対応する値を遷移先にする。
以下にマッピング例を示す。
setForwardPathMapping(Map)
に設定された内容が以下表の場合、
リクエストIDがRW4444の場合は、遷移先のパスは/rw4_error.jspとなる。
リクエストIDがRW3333の場合は、遷移先のパスは/rw_error.jspとなる。
----------- ----------------------------- キー パス ----------- ----------------------------- R /r_error.jsp R1234 /r1234_error.jsp RW /rw_error.jsp RW4 /rw4_error.jsp ----------- -----------------------------ただし、multipartリクエストには未対応。 本ハンドラは、
NablarchTagHandler
の手前に設定すること。- Author:
- Kiyohito Itoh
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected PostRequest
createPostRequest
(HttpRequest request) Deprecated.POST時のリクエスト情報を生成する。protected String
generatePostRequestKey
(String executionId) Deprecated.POST時のリクエスト情報をセッションスコープに格納する際に使用するキーを生成する。 キーの形式は下記の通り。protected String
generateRedirectPath
(HttpRequest request) Deprecated.POST後のリダイレクトに使用するパスを生成する。protected PostRequest
getPostRequest
(HttpRequest request, ExecutionContext context) Deprecated.リダイレクト前にセッションスコープに格納したリクエスト情報を取得する。handle
(HttpRequest request, ExecutionContext context) Deprecated.HTTPリクエストに対する処理を実行する。protected boolean
isPostRedirect
(HttpRequest request) Deprecated.POST再送信防止が指示されたリクエストであるか否かを判定する。protected boolean
isRedirectOnPost
(HttpRequest request) Deprecated.POST後にリダイレクトされたリクエストであるか否かを判定する。void
setForwardPathMapping
(Map<String, String> forwardPathMapping) Deprecated.リクエストIDと遷移先パスのマッピングを設定する。
-
Field Details
-
POST_RESUBMIT_PREVENT_PARAM
Deprecated.POST再送信防止を指示するパラメータ- See Also:
-
-
Constructor Details
-
PostResubmitPreventHandler
public PostResubmitPreventHandler()Deprecated.
-
-
Method Details
-
handle
Deprecated.HTTPリクエストに対する処理を実行する。 処理フローは下記の通り。[1]POST再送信防止が指示されたリクエストであるか否かを判定する。 POST再送信防止が指示されたリクエストである場合: リクエスト情報をセッションスコープに格納し、 再度同じURIに対してリダイレクトする。 POST再送信防止が指示されたリクエストでない場合: [2]に進む。 [2]POST後にリダイレクトされたリクエストであるか否かを判定する。 POST後にリダイレクトされたリクエストである場合: セッションスコープに格納したリクエスト情報をリクエストに設定後、 後続のハンドラを呼び出す。 POST後にリダイレクトされたリクエストでない場合: 後続のハンドラを呼び出す。
各処理の詳細については、各メソッドのJavadocを参照。- Specified by:
handle
in interfaceHandler<HttpRequest,
HttpResponse> - Specified by:
handle
in interfaceHttpRequestHandler
- Parameters:
request
- HTTPリクエストオブジェクトcontext
- サーバサイド実行コンテキストオブジェクト- Returns:
- HTTPレスポンスオブジェクト
-
isPostRedirect
Deprecated.POST再送信防止が指示されたリクエストであるか否かを判定する。 下記の条件をすべて満たす場合のみtrueを返す。・HTTPメソッドがPOSTであること ・POST再送信防止を指示するパラメータ(
POST_RESUBMIT_PREVENT_PARAM
)が存在すること- Parameters:
request
- リクエスト- Returns:
- POST再送信防止が指示されたリクエストである場合はtrue
-
createPostRequest
Deprecated.POST時のリクエスト情報を生成する。 リクエスト情報として下記を取得する。・リクエストパラメータ ・マルチパート
- Parameters:
request
- リクエスト- Returns:
- POST時のリクエスト情報
-
generatePostRequestKey
Deprecated.POST時のリクエスト情報をセッションスコープに格納する際に使用するキーを生成する。 キーの形式は下記の通り。nablarch_post_request_<実行時ID>
- Parameters:
executionId
- 実行時ID- Returns:
- POST時のリクエスト情報をセッションスコープに格納する際に使用するキー
-
generateRedirectPath
Deprecated.POST後のリダイレクトに使用するパスを生成する。 パスの形式は下記の通り。redirect://<リクエストURI>?nablarch_post_redirect_id=<実行時ID>
- Parameters:
request
- リクエスト- Returns:
- POST後のリダイレクトに使用するパス
-
isRedirectOnPost
Deprecated.POST後にリダイレクトされたリクエストであるか否かを判定する。 下記の条件をすべて満たす場合のみtrueを返す。・HTTPメソッドがGETであること ・リダイレクト時に付与したnablarch_post_redirect_idパラメータが存在すること
- Parameters:
request
- リクエスト- Returns:
- POST後にリダイレクトされたリクエストである場合はtrue
-
getPostRequest
Deprecated.リダイレクト前にセッションスコープに格納したリクエスト情報を取得する。 取得できない場合はnullを返す。
POST後にリダイレクトされたリクエストを識別するパラメータ、 およびPOSTリクエストのリクエスト情報は、 ともに保持しているマップから削除する。- Parameters:
request
- リクエストcontext
- 実行コンテキスト- Returns:
- リダイレクト前にセッションスコープに格納したリクエスト情報。取得できない場合はnull
-
setForwardPathMapping
Deprecated.リクエストIDと遷移先パスのマッピングを設定する。 MapのキーにはリクエストIDを識別する値を、値には遷移先のパスを設定する。- Parameters:
forwardPathMapping
- マッピング
-