これは、Spring Web Flow のような多くの Web フレームワークに実装されているPOST-REDIRECT-GET パターンを使用する Web アプリケーションを必要とするオプションです。
このようなコンテキストでは、セッションの有効期限が切れた後の戻るクリックGET
は、ブラウザーが新しい要求を送信し、サーバー コードがそれを新しい新しい で受信することを意味しますHttpSession
。ウィザードが最初のページで開始するセッション属性のおかげで、その状況を検出できます。GET
要求が最初のページに対するものではなく、セッションにその属性が含まれていない場合は、ログアウトまたは有効期限のタイムアウトによってセッションが失われたことを意味します。そのため、カスタム ページを表示して、失業したことをユーザーに警告し、ウィザードの最初のページに誘導することができます。
POST-REDIRECT-GET パターンを使用すると、ブラウザーの戻るボタンが、前述の新しい GET 要求を送信せずに、最新の入力を含む前のフォームを表示する可能性はありません。
ちなみに、このようなウィザードをたくさん設計する場合は、コントローラ サーブレットのみで構成されるSpring Web Flowを使用して、任意のビュー テクノロジを使用できるようにすることをお勧めします。
別の方法:サーバーに送信するたびに、ウィザード中にユーザーが提供したすべての情報を (クリアまたはエンコードされた状態で) 保存するカスタム永続 Cookie のおかげで、データ損失を回避することができます。その場合、セッション属性も役に立ちません。ただし、すべての Cookie が 1 行で送信されるため、Cookie の最大長、Cookie の数、または HTTP ヘッダー行の最大数などの多くの制約があるため、達成が複雑になる場合があります...