includeのサンプル

Revised: 27th/Oct./2002

前節ではRequestDispatcherクラスのforward()メソッドを使いました。ここではinclude()メソッドを紹介しましょう。forward()メソッドでは、要求と応答のオブジェクトをgetRequestDispatcher()メソッドで取得したリソースへ放り投げてしまいます(フォワードするんですね)ので、クライアントに応答するのは呼び出し元ではなく、フォワード先のリソースになります。。一方、include()メソッドでは、getRequestDispatcher()メソッドで取得したリソースの応答を、呼び出し元に組み込むことになりますので、クライアントに応答するのは、呼び出し元のリソースになります。

サーブレットからJSPのinclude

環境設定

前節と同じリソースを使います。ドキュメント・ルートは "C:\java\dispatchers" であり、サーバのコンテキスト・ルート "/dispatching" になるように設定しています。未設定の場合は、前節に戻って設定してください。

Tomcat の server.xml に次の行が挿入されているはずです(server.xml の絶対パスは、デフォルトでは "C:\Program Files\Apache Tomcat 4.0\conf\server.xml" になっているはずです)。

        <!-- Dispatching Examples Context -->
        <Context path="/dispatching" docBase="C:/java/dispatchers" debug="0"
                 reloadable="true" crossContext="true"/>

また、ドキュメントルート配下のディレクトリ構造は次のようになっているはずです。

C:\java\dispatchers以下のディレクトリ構造
図: C:\java\dispatchers 以下のディレクトリ構造

サーブレットのソースコード

"C:\java\dispatchers\WEB-INF\classes" に次のファイルを作成してください。

IncludingServlet.java:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class IncludingServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
		doPerform(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
		doPerform(request, response);
	}

	public void doPerform(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {

		// JSP のディスパッチャを取得
		RequestDispatcher reqJSP
			= getServletContext().getRequestDispatcher("/includedJSP.jsp");
			
		// HTTP ヘッダのセット
		response.setContentType("text/html; charset=Shift_JIS");
		// PrintWriter ストリームの取得と書き込み
		PrintWriter out = response.getWriter();
		out.println("<html lang=\"ja\"><head>includeメソッドサンプル</head><body>");
		out.println("<h1>includeメソッドのサンプル</h1>");
		out.println("<p>この文書はincludeメソッドのサンプルです。</p>");
		
		// ディスパッチャの include メソッドを利用
		reqJSP.include(request, response);
		
		out.println("</body></html>");
    }
}

JSP のソースコード

これを受け取る JSP は C:\java\dispatchers\includedJSP.jsp" です。

includedJSP.jsp:

<address>ここはインクルードされた JSP による出力部分です。<br />
現在時刻:<%= new java.util.Data() %><br />
Copyright © 2002 SUGAI, Manabu. All Rights Reserved.</address>

コンパイル

例によって、サーブレットをコンパイルするためには、環境変数 CLASSPATH に servlet.jar の絶対パスがセットされている必要があります。"C:\autoexec.bat" (Windows 9x系の場合)やコントロール パネルの「システム」-> 「詳細」-> 「環境変数」(Windows NT系の場合)環境変数に CLASSPATH をセットするか、コマンドラインから一時的にセットしてください。次の二つ目のコマンドは、コマンドラインから一時的に CLASSPATH をセットする場合の例です。本節まで順番に設定してきている方は、既にOSに環境変数を設定しているはずなので、setコマンドによる CLASSPATH の設定は不要です。

C:\>cd C:\java\dispatchers\WBE-INF\classes

C:\java\dispatchers\WBE-INF\classes>set CLASSPATH=C:\Program Files\Apache Group\
Tomcat 4.1\common\lib\servlet.jar;.;%PATH%

C:\java\dispatchers\WBE-INF\classes>javac IncludingServlet.java

実行

ブラウザのアドレス欄に次のように入力してください。

http://localhost/dispachers/IncludingServlet


Copyright © 2002 SUGAI, Manabu. All Rights Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送