クラス SessionRepositoryFilter<S extends Session>
java.lang.ObjectSE
org.springframework.session.web.http.SessionRepositoryFilter<S>
- 型パラメーター:
S
-Session
型。
- 実装されたすべてのインターフェース:
jakarta.servlet.Filter
Session
によってサポートされるように HttpSession
実装を切り替えます。SessionRepositoryFilter
は HttpServletRequest
をラップし、メソッドをオーバーライドして、SessionRepository
によって返される Session
によってサポートされる HttpSession
を取得します。SessionRepositoryFilter
は、HttpSessionIdResolver
(デフォルトは CookieHttpSessionIdResolver
)を使用して、HttpSession
と Session
抽象化の間のロジックをブリッジします。具体的には:- セッション ID は、
HttpSessionIdResolver.resolveSessionIds(jakarta.servlet.http.HttpServletRequest)
を使用して検索されます。デフォルトでは、SESSION という名前の Cookie を検索します。 - 新しく作成された
Session
のセッション ID は、HttpSessionIdResolver.setSessionId(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse, String)
を使用してクライアントに送信されます HttpSessionIdResolver.expireSession(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse)
ではセッション ID が無効になったことをクライアントに通知します
SessionRepositoryFilter は、HttpSession にアクセスするフィルター、またはセッションがオーバーライドされて適切に永続化されるようにレスポンスをコミットする可能性のあるフィルターの前に配置する必要があります。
- 導入:
- 1.0
フィールドサマリー
フィールドコンストラクターのサマリー
コンストラクターメソッドのサマリー
修飾子と型メソッド説明void
destroy()
final void
doFilter
(jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response, jakarta.servlet.FilterChain filterChain) このdoFilter
実装は、「すでにフィルター処理済み」のリクエスト属性を保管し、属性がすでにそこにある場合はフィルター処理せずに続行します。protected void
doFilterInternal
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) doFilter
と同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。protected void
doFilterNestedErrorDispatch
(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) 通常、ERROR ディスパッチは、REQUEST ディスパッチが完了した後に発生し、フィルターチェーンが新たに開始されます。protected StringSE
リクエストがすでにフィルタリングされていることを識別するリクエスト属性の名前を返します。void
init
(jakarta.servlet.FilterConfig config) void
setHttpSessionIdResolver
(HttpSessionIdResolver httpSessionIdResolver) 使用するHttpSessionIdResolver
を設定します。
フィールドの詳細
コンストラクターの詳細
SessionRepositoryFilter
新しいインスタンスを作成します。- パラメーター:
sessionRepository
- 使用するSessionRepository
。null にはできません。
メソッドの詳細
setHttpSessionIdResolver
使用するHttpSessionIdResolver
を設定します。デフォルトはCookieHttpSessionIdResolver
です。- パラメーター:
httpSessionIdResolver
- 使用するHttpSessionIdResolver
。null にはできません。
doFilterInternal
protected void doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOExceptionSE doFilter
と同じ契約ですが、単一のリクエストスレッド内のリクエストごとに 1 回だけ呼び出されることが保証されています。デフォルトの ServletRequest および ServletResponse の代わりに、HttpServletRequest および HttpServletResponse 引数を提供します。
- パラメーター:
request
- リクエストresponse
- レスポンスfilterChain
- FilterChain- 例外:
jakarta.servlet.ServletException
- 非 I/O 例外が発生したときにスローされますIOExceptionSE
- ある種の I/O 例外が発生したときにスローされます- 関連事項:
Filter.doFilter(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse, jakarta.servlet.FilterChain)
doFilterNestedErrorDispatch
protected void doFilterNestedErrorDispatch(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOExceptionSE 通常、ERROR ディスパッチは、REQUEST ディスパッチが完了した後に発生し、フィルターチェーンが新たに開始されます。ただし、一部のサーバーでは、ERROR ディスパッチが REQUEST ディスパッチ内にネストされている場合があります。レスポンスでsendError
を呼び出した結果。その場合、同じスレッドのチェーンフィルターにまだありますが、リクエストとレスポンスは元のラップされていないものに切り替えられています。サブクラスはこのメソッドを使用して、ネストされた ERROR ディスパッチをフィルタリングし、リクエストまたはレスポンスにラップを再適用できます。
ThreadLocal
コンテキスト(存在する場合)は、フィルターチェーン内に入れ子になっているため、まだアクティブである必要があります。- パラメーター:
request
- リクエストresponse
- レスポンスfilterChain
- フィルターチェーン- 例外:
jakarta.servlet.ServletException
- リクエストが HTTP リクエストでない場合IOExceptionSE
- I/O 操作例外の場合
doFilter
public final void doFilter(jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOExceptionSE このdoFilter
実装は、「すでにフィルター処理済み」のリクエスト属性を保管し、属性がすでにそこにある場合はフィルター処理せずに続行します。- 次で指定:
- インターフェース
jakarta.servlet.Filter
のdoFilter
- パラメーター:
request
- リクエストresponse
- レスポンスfilterChain
- フィルターチェーン- 例外:
jakarta.servlet.ServletException
- リクエストが HTTP リクエストでない場合IOExceptionSE
- I/O 操作例外の場合
getAlreadyFilteredAttributeName
リクエストがすでにフィルタリングされていることを識別するリクエスト属性の名前を返します。デフォルトの実装では、構成された具象フィルターインスタンスの名前を使用して、".FILTERED" を追加します。フィルターが完全に初期化されていない場合、そのクラス名にフォールバックします。
- 戻り値:
- すでにフィルタリングされたリクエストを示すリクエスト属性の名前
- 関連事項:
init
public void init(jakarta.servlet.FilterConfig config) - 次で指定:
- インターフェース
jakarta.servlet.Filter
のinit
destroy
public void destroy()- 次で指定:
- インターフェース
jakarta.servlet.Filter
のdestroy