サーブレットにおいて、リクエストを転送することを「ディスパッチ」といいます。
ディスパッチの特徴
あくまで、ディスパッチはサーバー側の処理のため、ブラウザから見たURLは、転送したところで変わらない。
ディスパッチの種類
ディスパッチは下記の2種類に分けることができます。
用語 | 説明 |
---|---|
フォワード | 転送先のリソースに出力処理を任せる。 |
インクルード | 転送先のリソースの出力結果をインクルードする。 |
フォワード
構文
RequestDispatcher dispatcher = request.getRequestDispatcher("フォワード先URL"); dispatcher.forward(request, response)
RequestDispatcherオブジェクトは、「画面の遷移先を定義するオブジェクト」で、「getRequestDispatcher」メソッドにより取得します。
forwardにより、転送先のURLに転送します。
フォワードの特徴
レスポンス処理は、転送元のサーブレットでは行わない。
転送前にレスポンスを更新してしまっても、転送後にクリアされるのでレスポンス処理は転送元では行わないこと。
フォワード先について
- JSPでも、サーブレットでも、HTMLでも指定することができる。
- 同じWebアプリケーション内しか転送できない。
転送しても再度リクエストされることがない。
フォワードは、同じリクエスト内で処理を移すので、再度リクエストされることがありません。
なので、下記のメリットがあります。
- サーバーへのリクエスト回数の低減
- リクエストスコープを保持できる。
基本的に、「同じWebアプリ内の同じ機能の別画面へ転送する場合」や、「サーブレットからJSPへ転送する場合」は、これを使います。
URLが変わらない。
フォワードで、別画面に転送する場合は、URLが変わりません。なので、例えば同じWebアプリでも別機能に転送する場合に、URLが前の機能のままになってしまう場合があります。
その場合は、「フォワード」ではなく、「リダイレクト」を使ったりします。
インクルード
用途
ヘッダや、フッター用のリソースをインクルードして、ページ全体を組み立てる場合に利用される。
この記事へのコメントはありません。