|
Mergedoc Translation |
||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjavax.servlet.GenericServlet
javax.servlet.http.HttpServlet
public abstract class HttpServlet
Web サイトに適した HTTP Servlet を生成するために、サブクラス化を前提とする抽象クラスを提供します。
HttpServlet
のサブクラスでは、少なくとも、以下に挙げられている1つのメソッドをオーバーライドする必要があります。
doGet
メソッド, Servlet が HTTP GET リクエストをサポートする場合
doPost
メソッド, HTTP POST リクエストをサポートする場合
doPut
メソッド, HTTP PUT リクエストをサポートする場合
doDelete
メソッド, HTTP DELETE リクエストをサポートする場合
init
メソッド および destroy
メソッド, Servlet のライフサイクルを維持するリソースを管理したい場合
getServletInfo
メソッド, Servlet が自身の情報を提供する目的で使用する場合
service
メソッドをオーバーライドする理由は、ほとんどありません。
service
メソッドは、各々の HTTP リクエストに対応するハンドラ (前述の do
XXX メソッド) にディスパッチすることによって標準 HTTP リクエストを処理します。
同様に、doOptions
メソッド、および、doTrace
メソッドをオーバーライドする理由も、ほとんどありません。
一般的に、Servlet はマルチスレッドサーバ上で実行されるので、 Servlet はリクエストを並行的に受け付けなければならず、共有リソースへのアクセスの同期化などの注意が必要となります。 共有リソースには、インスタンス変数またはクラス変数のようなメモリデータ、および、ファイル、データベースコネクション、ネットワークコネクションのような外部オブジェクトが含まれます。 Java プログラム上におけるマルチスレッド処理についてのさらなる情報源として、 Java チュートリアルのマルチスレッドプログラミングの章 を参考にしてください。
コンストラクタの概要 | |
---|---|
HttpServlet()
抽象クラスであるため、何も行われません。 |
メソッドの概要 | |
---|---|
protected void |
doDelete(HttpServletRequest req,
HttpServletResponse resp)
Servlet に DELETE リクエストを処理可能にさせるため、( service メソッド経由で) サーバによって呼び出されます。 |
protected void |
doGet(HttpServletRequest req,
HttpServletResponse resp)
Servlet に GET リクエストを処理可能にさせるため、( service メソッドを通じて) サーバによって呼び出されます。 |
protected void |
doHead(HttpServletRequest req,
HttpServletResponse resp)
protected と定義された service メソッド経由で HTTP HEAD リクエストを受け取り、リクエストを処理します。 |
protected void |
doOptions(HttpServletRequest req,
HttpServletResponse resp)
Servlet に OPTIONS リクエストを処理可能にさせるため、( service メソッド経由で) サーバによって呼び出されます。 |
protected void |
doPost(HttpServletRequest req,
HttpServletResponse resp)
Servlet に POST リクエストを処理可能にさせるため、( service メソッド経由で) サーバによって呼び出されます。 |
protected void |
doPut(HttpServletRequest req,
HttpServletResponse resp)
Servlet に PUT リクエストを処理可能にさせるため、( service メソッド経由で) サーバによって呼び出されます。 |
protected void |
doTrace(HttpServletRequest req,
HttpServletResponse resp)
Servlet に TRACE リクエストを処理可能にさせるため、( service メソッド経由で) サーバによって呼び出されます。 |
protected long |
getLastModified(HttpServletRequest req)
1970年1月1日 00:00:00 GMT からのミリ秒で、 HttpServletRequest オブジェクトが最後に更新された時間を返します。 |
protected void |
service(HttpServletRequest req,
HttpServletResponse resp)
public で定義された service メソッド経由で標準 HTTP リクエストを受け取り、それらをこのクラスで定義された do XXX メソッドにディスパッチします。 |
void |
service(ServletRequest req,
ServletResponse res)
クライアントからのリクエストを、protected と定義された service メソッドにディスパッチします。 |
クラス javax.servlet.GenericServlet から継承されたメソッド |
---|
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, init, log, log |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public HttpServlet()
メソッドの詳細 |
---|
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
service
メソッドを通じて) サーバによって呼び出されます。
GET リクエストをサポートするこのメソッドをオーバーライドすることにより、HTTP HEAD リクエストも自動的にサポートします。 HEAD リクエストとは、レスポンスのボディ部をまったく含めず、リクエストのヘッダ項目のみが返される GET リクエストです。
このメソッドをオーバーライドするときは、リクエストデータの取得、レスポンスヘッダの出力、レスポンスの Writer または OutputStream オブジェクトの取得、最後にレスポンスデータの出力、という順になります。
その際、コンテンツタイプやエンコーディングを含めるのがベストです。
レスポンスを返すための PrintWriter
オブジェクトを使用する際には、PrintWriter
にアクセスする前に Content-Type をセットするようにしてください。
HTTP の規約によると、ヘッダ情報はレスポンスのボディの前に送信しなければならないため、Servlet コンテナは、レスポンスを出力する前にヘッダ情報を出力しなければなりません。
Servlet コンテナがクライアントにレスポンスを返すための持続的なコネクションを利用できるよう、可能な限り、(ServletResponse.setContentLength(int)
メソッドを使って) Content-Length ヘッダをセットし、パフォーマンスを改善できるようにします。
レスポンス全体がレスポンスバッファ内に収まった場合、Content-Length が自動的にセットされます。
HTTP 1.1 のチャンクドエンコーディングを使用する場合 (レスポンスに Transfer-Encoding ヘッダを持つことを意味します) は、Content-Length ヘッダを設定しないでください。
GET メソッドは安全であるべきであり、言い換えると、ユーザが責任を負うための副作用が無いようにすべきだということです。 例えば、ほとんどのフォームクエリには副作用がありません。 クライアントのリクエストにより、すでにストア済のデータを変更させる場合は、そのリクエスト方法として、他の HTTP メソッドを使用すべきです。
また GET メソッドは、冪等 (idempotent) であるべきであり、それは、同じ要求を安全に繰り返し発行させることが可能であることを意味します。 時々メソッドを安全にすることがまた、冪等 (idempotent) とすることもあります。 例えば、クエリを繰り返し発行することは冪等 (idempotent) でかつ安全ですが、オンライン製品を購入、もしくは、データを変更するようなときは、必ずしも安全もしくは冪等 (idempotent) であるとは限りません。
リクエストが正しいフォーマットでない場合、doGet
メソッドは HTTP "Bad Request" メッセージを返します。
req
- クライアントが Servlet へ要求したリクエスト内容を含む HttpServletRequest
オブジェクトresp
- Servlet がクライアントに返すレスポンス内容を含む HttpServletResponse
オブジェクト
java.io.IOException
- Servlet が GET リクエストを処理している間に入出力エラーが発生した場合
ServletException
- GET に相当するリクエストが処理できない場合ServletResponse.setContentType(java.lang.String)
protected long getLastModified(HttpServletRequest req)
HttpServletRequest
オブジェクトが最後に更新された時間を返します。
更新された時間が不明の場合、このメソッドは負数 (デフォルト値) を返します。
HTTP GET リクエストをサポートし、最後に更新された時間をすぐに決定可能な Servlet では、このメソッドをオーバーライドするべきです。 こうすることにより、ブラウザやプロキシのキャッシュ処理をさらに効果的にさせ、サーバおよびネットワークにおけるリソースの負荷を軽減させることが可能です。
req
- Servlet へ要求した HttpServletRequest
オブジェクト
HttpServletRequest
オブジェクトが最後に更新された時間を long
型の整数値で返し、更新された時間が不明の場合は -1 を返すprotected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
protected と定義された service
メソッド経由で HTTP HEAD リクエストを受け取り、リクエストを処理します。
クライアントは、Content-Type や Content-Length といったレスポンスのヘッダを参照したいときに、HEAD リクエストを送信します。
HTTP HEAD メソッドは、Content-Length ヘッダを正確にセットするため、レスポンスの出力バイト数をカウントします。
このメソッドをオーバーライドすると、レスポンスのボディを返すことを回避でき、動作を保証する目的でレスポンスのヘッダ情報を直接セットすることができます。
実装した doHead
メソッドが、安全でかつ冪等 (idempotent) (つまり、一つの HTTP HEAD リクエストを何回か発行し、正常に到達させることを保証する) であるかを確かめてみてください。
HTTP HEAD リクエストが正しいフォーマットでない場合、doHead
メソッドは HTTP "Bad Request" メッセージを返します。
req
- Servlet へ渡された HttpServletRequest
オブジェクトresp
- Servlet がヘッダ情報をクライアントへ返すために使用する HttpServletResponse
オブジェクト
java.io.IOException
- 入出力エラーが発生した場合
ServletException
- HEAD に相当するリクエストが処理できない場合protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
Servlet に POST リクエストを処理可能にさせるため、(service
メソッド経由で) サーバによって呼び出されます。
HTTP POST メソッドは、クライアントが無制限の長さのデータを Web サーバへ一回で送信することを可能にし、クレジットカード番号のような情報を送るときに役立ちます。
このメソッドをオーバーライドするときは、リクエストデータの取得、レスポンスヘッダの出力、レスポンスの Writer もしくは OutputStream オブジェクトの取得、そして最後に、レスポンスデータの出力、という順になります。
その際、コンテンツタイプやエンコーディングの指定を含めるのがベストです。
レスポンスを返す PrintWriter
オブジェクトを使用する際には、PrintWriter
オブジェクトにアクセスする前に、コンテンツタイプを指定するようにします。
HTTP の規約によると、ヘッダ情報はレスポンスのボディの前に送信しなければならないため、Servlet コンテナは、レスポンスを出力する前にヘッダ情報を出力しなければなりません。
Servlet コンテナがクライアントにレスポンスを返すための持続的なコネクションを利用できるよう、可能な限り、(ServletResponse.setContentLength(int)
メソッドを利用して) Content-Length ヘッダをセットし、パフォーマンスを改善できるようにします。
レスポンス全体がレスポンスバッファ内で収まった場合、コンテンツの長さは自動的にセットされます。
HTTP 1.1 の Chunked エンコーディング (レスポンスに Transfer-Encoding ヘッダが含まれることを意味する) を使用しているときは、Content-Length ヘッダを指定しないでください。
このメソッドは、安全もしくは冪等 (idempotent) である必要はありません。 POST を通してリクエストされたオペレーションは、例えば、ストア済データの更新やオンライン商品の購入のように、ユーザが責任を負わなければいけない副作用があっても構いません。
HTTP POST リクエストが正しいフォーマットでない場合、doPost
メソッドは HTTP "Bad Request" メッセージを返します。
req
- クライアントが Servlet へ要求したリクエスト内容を含む HttpServletRequest
オブジェクトresp
- Servlet がクライアントに返すレスポンス内容を含む HttpServletResponse
オブジェクト
java.io.IOException
- Servlet が POST リクエストを処理している間に入出力エラーが発生した場合
ServletException
- POST に相当するリクエストが処理できない場合ServletOutputStream
,
ServletResponse.setContentType(java.lang.String)
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
Servlet に PUT リクエストを処理可能にさせるため、(service
メソッド経由で) サーバによって呼び出されます。
PUT オペレーションによって、クライアントがサーバ上にファイルを配置させることが可能となります。それは FTP 経由ファイルを転送することとよく似ています。
このメソッドをオーバーライドするときは、リクエストとして送られたあらゆるコンテンツヘッダ (Content-Length, Content-Type, Content-Transfer-Encoding, Content-Encoding, Content-Base, Content-Language, Content-Location, Content-MD5, and Content-Range を含む) に対して、一切手をつけないようにしてください。 メソッドがコンテンツヘッダを処理できない場合、エラーメッセージ (HTTP 501 - Not Implemented) を発生させ、リクエストを無視しなければなりません。 HTTP 1.1 に関する詳細な情報は、RFC 2616 を参照してください。
このメソッドは、安全もしくは冪等 (idempotent) である必要はありません。
doPut
メソッドを実行するオペレーションは、ユーザが責任を負わなければいけない副作用があっても構いません。
このメソッドを使うと、何らかの影響を及ぼすようなURLのコピーを一時記憶装置に保存するのに役に立つかもしれません。
HTTP PUT リクエストが正しいフォーマットでない場合、doPut
メソッドは HTTP "Bad Request" メッセージを返します。
req
- クライアントが Servlet へ要求したリクエスト内容を含む HttpServletRequest
オブジェクトresp
- Servlet がクライアントに返すレスポンス内容を含む HttpServletResponse
オブジェクト
java.io.IOException
- Servlet が PUT リクエストを処理している間に入出力エラーが発生した場合
ServletException
- PUT に相当するリクエストが処理できない場合protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
Servlet に DELETE リクエストを処理可能にさせるため、(service
メソッド経由で) サーバによって呼び出されます。
DELETE オペレーションによって、クライアントがサーバ上のドキュメントもしく Web ページを削除させることが可能となります。
このメソッドは、安全もしくは冪等 (idempotent) である必要はありません。 DELETE を通してリクエストされたオペレーションは、ユーザが責任を負わなければならない副作用があっても構いません。 このメソッドを使うと、何らかの影響を及ぼすような URL のコピーを一時記憶装置に保存するのに役に立つかもしれません。
HTTP DELETE リクエストが正しいフォーマットでない場合、doDelete
メソッドは HTTP "Bad Request" メッセージを返します。
req
- クライアントが Servlet へ要求したリクエスト内容を含む HttpServletRequest
オブジェクトresp
- Servlet がクライアントに返すレスポンス内容を含む HttpServletResponse
オブジェクト
java.io.IOException
- Servlet がDELETE リクエストを処理している間に入出力エラーが発生した場合
ServletException
- DELETE に相当するリクエストが処理できない場合protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
Servlet に OPTIONS リクエストを処理可能にさせるため、(service
メソッド経由で) サーバによって呼び出されます。
OPTIONS リクエストは、サーバのサポートする HTTP メソッドを決定し、適当なヘッダ情報を返します。
例えば、Servlet に doGet
がオーバーライドされた場合、このメソッドは次のようなヘッダ情報を返します。
Allow: GET, HEAD, TRACE, OPTIONS
Servlet が新たな HTTP メソッドを実装しない限り、すなわち、HTTP 1.1 で定義されてない HTTP メソッドでなければ、このメソッドをオーバーライドする必要はありません。
req
- クライアントが Servlet へ要求したリクエスト内容を含む HttpServletRequest
オブジェクトresp
- Servlet がクライアントに返すレスポンス内容を含む HttpServletResponse
オブジェクト
java.io.IOException
- Servlet が OPTIONS リクエストを処理している間に入出力エラーが発生した場合
ServletException
- OPTIONS に相当するリクエストが処理できない場合protected void doTrace(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
service
メソッド経由で) サーバによって呼び出されます。
TRACE は、TRACE リクエストとして送られたヘッダ情報をクライアントへ返すことによって、それらをデバッグ目的で使用することが可能となります。
req
- クライアントが Servlet へ要求したリクエスト内容を含む HttpServletRequest
オブジェクトresp
- Servlet がクライアントに返すレスポンス内容を含む HttpServletResponse
オブジェクト
java.io.IOException
- Servlet が TRACE リクエストを処理している間に入出力エラーが発生した場合
ServletException
- TRACE に相当するリクエストが処理できない場合protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
public で定義された service
メソッド経由で標準 HTTP リクエストを受け取り、それらをこのクラスで定義された do
XXX メソッドにディスパッチします。
このメソッドは、Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
メソッドの HTTP 仕様バージョンです。
このメソッドをオーバーライドする必要はありません。
req
- クライアントが Servlet へ要求したリクエスト内容を含む HttpServletRequest
オブジェクトresp
- Servlet がクライアントに返すレスポンス内容を含む HttpServletResponse
オブジェクト
java.io.IOException
- Servlet が HTTP リクエストを処理している間に入出力エラーが発生した場合
ServletException
- HTTP に相当するリクエストが処理できない場合Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException
service
メソッドにディスパッチします。
このメソッドをオーバーライドする必要はありません。
Servlet
内の service
GenericServlet
内の service
req
- クライアントが Servlet へ要求したリクエスト内容を含む HttpServletRequest
オブジェクトres
- Servlet がクライアントに返すレスポンス内容を含む HttpServletResponse
オブジェクト
java.io.IOException
- Servlet が HTTP リクエストを処理している間に入出力エラーが発生した場合
ServletException
- HTTP に相当するリクエストが処理できない場合Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
|
Mergedoc Translation |
||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |