4.サーブレットの構造

サーブレットの作成方法、実行方法が前章で理解できたと思われます。ここではサーブレットの構造について詳しく説明していきます。

(1) サーブレットの構造

 サーブレットのプログラミング・スタイルは、Java のコアAPI をベースにして、通信の入出力部分をサーブレットAPI で拡張するイメージです。サーブレットAPI を利用するとサーバー/クライアントの通信がとても簡素になります。

 サーブレットは HttpServlet クラスを継承し、おおよそ次のような構造で記述します。

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

public class SanServlet extends HttpServlet{

   public void init(){
        サーブレットが起動されたときに実行する初期化処理(省略可)
   }

   public void service((HttpServletRequest  req, 
                            HttpServletResponse resp)
              throws ServletException, java.io.IOException){
        サーブレットが要求されるたびに呼び出される

        特定の要求に対応するメソッドの場合
        doGet、doPost、doPut、
        doDelete、doOptions、doTrace 
   }

   public getServletInfo(){
        サーブレットの説明や著作権情報の文字列を返却(省略可)
   }

   public void destroy() {
        サーブレットが消滅直前に実行するサーブレットの終了(省略可)
   }

}


 通常は、doGetやdoPostメソッドを利用しますが、GETでもPOSTでも共通な処理にする場合に service メソッドを利用します。 。

(2) サーブレットの特徴


ロードとアンロード

サーブレットは起動後、サーバーにロードされて(最初だけ)処理を行いますが、処理終了後も破棄せず「待機状態」となります。つまりアンロードされずにサーバー上のメモリに常駐します。この点がアプレットと大きく異なります。

では、サーブレットのプログラムを更新する場合はどうするのでしょうか。普通に考えたら稼働しているサーブレットを安全に停止・削除後、新しいサーブレット を格納・起動する手順となりますが、指定のフォルダにクラス・ファイルを格納 すればサーバーがクラス・ファイル更新を識別して、次回リクエスト時に自動的にリロードしてくれます。

サーブレットの利点

・来客(HTTP request)毎にプロセスを起動するCGIに比べて反応速度が速い。
・データをメモリ上に置ける。(でもコレはサーバーがダウンすると消滅します)
・豊富なJavaAPIを利用できる
・GUIを持たないので安定

サーブレットとJSPを連携させて利用するフレームワークが増えてきています。


次の章(3.Webアプリケーション)  次の章(5.doGetとHtml出力)