5. includeとforward
サーブレット 5章 includeとforward
- 5.1. 他のサーブレットの呼び出し
- 5.2. include
- 5.3. forward
- 5.4. ServletRequestを用いたデータ共有
5.1. 他のサーブレットの呼び出し
サーブレットから他のサーブレットに処理を一部委託したい場合や、全面的に引き継ぎたい場合が考えられます。昔のJava Servlet APIでは、「ServletContext」クラスの「getServlet」「getServlets」メソッドで、「Servlet」オブジェクトを取得する事ができたので、このメソッドを介して他のサーブレットに処理を委託する事ができました。
しかしバージョン2.1以降、この方法は問題が多いので削除される事となりました。現在もこれらのメソッドは定義されていますが、常にnullが返されるようになっています。その代わりとして、「include」と「forward」が提供されるようになりました。includeはSSIのようなもので、一部分の表示を他に委託して任せるというものです。1つのページの中に他の「HTML」や、「JSP」「Servlet」の処理結果を含める事ができます。
「forward」は、処理を完全に他に転送してしまいます。HTTPにもリダイレクトがありますが、これは一旦クライアント側に応答を返した後、クライアント側から別のページへ自動的に移動するという形をとります。サーブレットのforwardはサーバ内部で転送が行われるので、クライアントに応答を返すというオーバーヘッドがありません。以降、includeとforwardについて説明します。