サーブレットクラスは、javax.servlet.Servlet
インターフェイスを実装する必要があります。サーブレット API には、このインターフェイスを実装し、Java サーブレットを作成するときに拡張できる次の 2 つのクラスが含まれています。
GenericServlet
プロトコルに依存しない基本サーブレット機能を提供します。このクラスを拡張して、HTTP 以外のサービスをコーディングします。ただし、ほとんどの場合クラスは HttpServlet
から拡張します。
HttpServlet
GenericServlet
を拡張して HTTP 特有の機能を追加します。ほとんどのクラスが HttpServlet
を拡張します。また、この章では、クラスで HTTP 処理を実行することを想定しています。
次の図で示すように、サーブレット API は、java.io
、java.lang
、javax.servlet
、javax.http.servlet
パッケージにあるクラスやインターフェイスを使用します。
サーブレット API のクラス、インターフェイス、および例外の詳細については、『Servlet API JavaDocs』を参照してください。
次の図で示すように、サーブレットのライフサイクルにはいくつかのフェーズがあります。
初期化フェーズで、JRun はサーブレットの init
メソッドを呼び出します。init
メソッドは一度だけ呼び出されます。したがって、JRun がサーブレットを呼び出すたびに貴重なリソースを割り当てる必要はありません。init
メソッドは、サーブレットがライフサイクル全体で必要とするリソースを割り当てるために使用します。JRun は、起動時 (JMC 内で有効にされている場合) や最初のクライアントリクエストを受け取ったときに init
メソッドを呼び出します。
サーブレットクラス内で init
メソッドをオーバーライドする必要はありません。初期化時に何らかのタイプの処理を実行する場合にのみ、このメソッドをオーバーライドします。
サーブレットが受信したすべてのリクエストを処理するとき、リクエスト処理フェーズに入ります。JRun は、GenericServlet をオーバーライドする場合は、service
メソッドにリクエストを転送し、HttpServlet クラスをオーバーライドする場合は do
Xxx メソッドにリクエストを転送します。
JRun サーバをシャットダウンするときや、変更されたサーブレットを JRun サーバがリロードするときは、JRun はサーブレットをメモリからアンロードします。アンロード時に、サーブレットは廃棄フェーズに入ります。廃棄リクエストの開始時に、JRun は destroy
メソッドを呼び出します。destroy
メソッド内で、サーブレットが使用していたリソースの割り当てを解放できます。JRun が destroy
メソッドを呼び出すと、クラスはすぐにガーベッジコレクションを実行できます。