public interface Servlet
サーブレットはウェブサーバーで動く小さなJavaのプログラムです。 サーブレットは通常、HTTP(HyperText Transfer Protocol)を通じてウェブクライアントからリクエストを受け取りレスポンスを返します。
このインターフェースを実装するために一般的なサーブレットの場合はjavax.servlet.GenericServlet
を継承するか、
HTTPに特化したサーブレットの場合はjavax.servlet.http.HttpServlet
を継承することができます。
このインターフェースは、サーブレットを初期化する、リクエストを処理する、サーブレットをサーバーから取り除くメソッドが定義されています。 これらはライフサイクルメソッドとして知られており、以下のような順番で呼び出されます。
init
メソッドにより初期化されます。
service
メソッドが実行されます。
destroy
メソッドにより終了処理が行われ、その後、ガーベッジコレクションとファイナライズされます。
このインターフェースではライフサイクルメソッドに加えてgetServletConfig
を提供しています。
これはサーブレットが起動時の情報を使用するために使うことができます。
また、getServletInfo
で作者やバージョン、コピーライトなどのサーブレット自身についての基本的な情報を返すことが許されます。
GenericServlet
,
HttpServlet
修飾子とタイプ | メソッドと説明 |
---|---|
void |
destroy()
サーブレットがサービスから取り除かれるときにサーブレットコンテナにより呼び出されます。
|
ServletConfig |
getServletConfig()
ServletConfig のオブジェクトを返します。 |
String |
getServletInfo()
サーブレットの情報を返します。
|
void |
init(ServletConfig config)
サーブレットがサービスに組み込まれるときにサーブレットコンテナにより呼び出されます。
|
void |
service(ServletRequest req,
ServletResponse res)
サーブレットがリクエストに応答できるようにサーブレットコンテナによって呼び出されます。
|
void init(ServletConfig config) throws ServletException
サーブレットコンテナはサーブレットのインスタンスを生成した後にinit
メソッドを一回だけ呼び出します。
init
メソッドはサーブレットがリクエストを受け取る前に正常に完了しなければいけません。
以下の場合にはサーブレットコンテナはサーブレットを実行状態にすることができません。
init
メソッドがServletException
を投げた
init
メソッドがウェブサーバーで定義した時間内に処理を終了しない
config
- サーブレットの設定や初期化パラメーターが含まれる ServletConfig
オブジェクトServletException
- サーブレットの通常の処理で例外が発生したUnavailableException
,
getServletConfig()
ServletConfig getServletConfig()
ServletConfig
のオブジェクトを返します。これにはサーブレットを初期化するためのパラメーターが入っています。
このServletConfig
のオブジェクトは init
に渡されたものが返されます。
このインターフェースの実装は ServletConfig
のオブジェクトを格納しこのメソッドが返すようにします。
このインターフェースを実装している GenericServlet
クラスではすでにこれを行っています。
ServletConfig
のオブジェクトinit(javax.servlet.ServletConfig)
void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
このメソッドはサーブレットのinit()
メソッドが正常に完了した場合のみ呼び出されます。
レスポンスのステータスコードはサーブレットがエラーをスローまたは送信するために常に設定するべきです。
サーブレットは通常、複数のリクエストを同時に処理できるようにサーブレットコンテナ内でマルチスレッドで動作します。 開発者はファイルやネットワークコネクション、サーブレットのクラスやインスタンス変数などの共有リソースへのアクセスを同期させる必要があります。 マルチスレッドプログラミングに関する詳細な情報は the Java tutorial on multi-threaded programmingを参照してください。 訳注:原文はリンクが切れたままになっているので今のJavaのチュートリアルのページだとLesson: Concurrencyが良さそう。
req
- クライアントのリクエストが含まれるServletRequest
のオブジェクトres
- サーブレットのレスポンスが含まれるServletResponse
のオブジェクトServletException
- サーブレットの通常の処理で例外が発生したIOException
- I/Oの例外が発生したString getServletInfo()
このメソッドが返す文字列はプレーンテキストにして、あらゆる種類のマークアップ(HTML、XMLその他)で装飾しないほうがよいです。
String
void destroy()
service
メソッドが終了したかタイムアウトした後に一度だけ呼び出されます。
サーブレットコンテナはこのメソッドを呼出した後に同じインスタンスでservice
メソッドを再度呼び出すことはありません。
このメソッドは保持されているすべてのリソース(メモリ、ファイルハンドル、スレッドなど)をクリーンアップする機会を与えます。 また、サーブレットのメモリ上の状態とあらゆる永続状態が同期されるように注意してください。
Copyright © 1999-2017, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms. Portions Copyright © 1999-2002 The Apache Software Foundation. Portions Copyright © 2017- @megascus. Translated by @megascus.