- 1.1. サーブレットの特徴
- 1.2. 簡単なサーブレットクラス
- 1.3. サーブレットの設定
- 1.4. コンテナの設定
1.2. 簡単なサーブレットクラス
ここからはJakartaプロジェクト1 で開発が進められているアプリケーションサーバー「Tomcat」のVersion 4.1を対象に話を進めていきます。Tomcatは次のサイトからダウンロードできます。インストールおよび起動方法についての説明は省略します。
http://jakarta.apache.org/tomcat/index.html
サーブレットのプログラムを作成する場合、基本的に「javax.servlet.http.HttpServlet」クラスを拡張したクラスを作成します。「HttpServlet」クラスには「doGet」「doPost」など「doXXX」という名前のメソッドが7つ定義されており、それぞれHTTPの「GET」「POST」命令等に対応しています。GET命令があった場合には、doGetメソッドが呼び出され実行されます。
import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class HelloServlet extends HttpServlet{ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ response.setContentType("text/html; charset=EUC-JP"); PrintWriter writer=response.getWriter(); writer.println("<html><head><title>sample</title></head>"); writer.println("<body>こんにちは</body></html>"); } }
上記のサンプルプログラムは、簡単なHTMLファイルを返すサーブレットプログラムです。doGetメソッドだけが定義されており、このサーブレットがGET命令のみに対応していることが解ります。
応答を返す場合には「javax.servlet.http.HttpServletResponse」オブジェクトを使用します。まず初めに「setContentType」メソッドで、レスポンスのMIMEタイプを指定します。この値はそのまま、HTTPヘッダーの「Content-Type」の値として指定されます。また「charset=XXX」の部分は重要で、ここで指定された文字コードにエンコードして応答が返されます。ここが「EUC-JP」なら「EUC-JP」コードで、「Shift_JIS」なら「Shift_JIS」コードで返されます。指定しない場合には、何の変換も行いません。したがって日本語のページを表示する場合には、必ず文字コードを指定する必要があります。
応答内容の指定には、「getWriter」メソッドで「java.io.PrintWriter」オブジェクトを取得する方法がもっとも簡単です。「println」メソッドで指定した文字列が、コンテンツとして返されます。
上記のサンプルプログラムをコンパイルする場合には、Tomcatのインストールディレクトリの「common/lib」にある「servlet.jar」をクラスパスに含める必要があります。
(実習課題1)
以下のサーブレットプログラムを作成しなさい。実行までできるようにする必要は無い。
- 要求のあった時刻を表示するプログラム
1 [2012/5/23追記] 2011/12/21にてJakarta Projectは廃止されました。このプロジェクトはApache Projectに移管済みです