クラス HttpServlet
- 実装されたすべてのインターフェース:
Servlet
、ServletConfig
、SerializableSE
HttpServlet
のサブクラスは、少なくとも 1 つのメソッド、通常は次のいずれかをオーバーライドする必要があります。doGet
、サーブレットが HTTP GET リクエストをサポートする場合doPost
、HTTP POST リクエスト用doPut
、HTTP PUT リクエスト用doDelete
、HTTP DELETE リクエスト用init
およびdestroy
、サーブレットの存続期間中保持されるリソースを管理するgetServletInfo
、サーブレットは自身に関する情報を提供するために使用します
service
メソッドをオーバーライドする理由はほとんどありません。service
は、HTTP リクエスト型ごとにハンドラーメソッド(上記の do
XXX メソッド)にディスパッチすることにより、標準の HTTP リクエストを処理します。
同様に、doOptions
メソッドと doTrace
メソッドをオーバーライドする理由はほとんどありません。
サーブレットは通常マルチスレッドサーバーで実行されるため、サーブレットは同時リクエストを処理する必要があることに注意し、共有リソースへのアクセスを同期するよう注意してください。共有リソースには、インスタンス変数やクラス変数などのメモリ内データと、ファイル、データベース接続、ネットワーク接続などの外部オブジェクトが含まれます。Java プログラムでの複数のスレッドの処理の詳細については、マルチスレッドプログラミングに関する Java チュートリアルSEを参照してください。
- 作成者:
- Various
- 関連事項:
フィールドのサマリー
フィールド修飾子と型フィールド説明static final StringSE
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。将来のリリースで削除される可能性がありますコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected void
doDelete
(HttpServletRequest req, HttpServletResponse resp) サーブレットが DELETE リクエストを処理できるようにするために(service
メソッドを介して)サーバーによって呼び出されます。protected void
doGet
(HttpServletRequest req, HttpServletResponse resp) サーバーが(service
メソッドを介して)呼び出して、サーブレットが GET リクエストを処理できるようにします。protected void
doHead
(HttpServletRequest req, HttpServletResponse resp) 保護されたservice
メソッドから HTTP HEAD リクエストを受信し、リクエストを処理します。protected void
doOptions
(HttpServletRequest req, HttpServletResponse resp) サーバーによって(service
メソッドを介して)呼び出され、サーブレットが OPTIONS リクエストを処理できるようにします。protected void
doPatch
(HttpServletRequest req, HttpServletResponse resp) サーブレットが PATCH リクエストを処理できるようにするために、サーバーによって (service
メソッド経由で) 呼び出されます。protected void
doPost
(HttpServletRequest req, HttpServletResponse resp) サーバーが(service
メソッドを介して)呼び出して、サーブレットが POST リクエストを処理できるようにします。protected void
doPut
(HttpServletRequest req, HttpServletResponse resp) サーバーによって(service
メソッドを介して)呼び出され、サーブレットが PUT リクエストを処理できるようにします。protected void
doTrace
(HttpServletRequest req, HttpServletResponse resp) サーバーによって(service
メソッドを介して)呼び出され、サーブレットが TRACE リクエストを処理できるようにします。protected long
HttpServletRequest
オブジェクトが最後に変更された時刻を、GMT 1970 年 1 月 1 日午前 0 時からのミリ秒単位で返します。void
init
(ServletConfig config) サーブレットがサービスに配置されていることをサーブレットに示すために、サーブレットコンテナーによって呼び出されます。protected boolean
isSensitiveHeader
(StringSE headerName) 提供された HTTP リクエストヘッダーは機密であるとみなされるため、TRACE
リクエストへのレスポンスから除外する必要がありますか ?protected void
service
(HttpServletRequest req, HttpServletResponse resp) パブリックservice
メソッドから標準 HTTP リクエストを受信し、このクラスで定義されたdo
XXX メソッドにディスパッチします。void
service
(ServletRequest req, ServletResponse res) 保護されたservice
メソッドにクライアントリクエストをディスパッチします。クラス jakarta.servlet.GenericServlet から継承されたメソッド
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
フィールドの詳細
LEGACY_DO_HEAD
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。将来のリリースで削除される可能性がありますdoHead(HttpServletRequest, HttpServletResponse)
のレガシー処理が提供されているかどうかを判別するためにServletConfig.getInitParameter(String)
を取得したパラメーター。- 導入:
- Servlet 6.0
- 関連事項:
コンストラクターの詳細
HttpServlet
public HttpServlet()これは抽象クラスであるため、何もしません。
メソッドの詳細
init
クラスからコピーされた説明:GenericServlet
サーブレットがサービスに配置されていることをサーブレットに示すために、サーブレットコンテナーによって呼び出されます。Servlet.init(jakarta.servlet.ServletConfig)
を参照してください。この実装は、後で使用するためにサーブレットコンテナーから受け取った
ServletConfig
オブジェクトを格納します。この形式のメソッドをオーバーライドするときは、super.init(config)
を呼び出します。- 次で指定:
- インターフェース
Servlet
のinit
- オーバーライド:
- クラス
GenericServlet
のinit
- パラメーター:
config
- このサーブレットの構成情報を含むServletConfig
オブジェクト- 例外:
ServletException
- サーブレットの通常の操作を中断する例外が発生した場合- 関連事項:
doGet
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptionSE サーバーが(service
メソッドを介して)呼び出して、サーブレットが GET リクエストを処理できるようにします。GET リクエストをサポートするためにこのメソッドをオーバーライドすると、HTTP HEAD リクエストも自動的にサポートされます。HEAD リクエストは GET リクエストであり、リクエストヘッダーフィールドのみをレスポンスに含めて返します。
このメソッドをオーバーライドする場合、リクエストデータを読み取り、レスポンスヘッダーを書き込み、レスポンスのライターまたは出力ストリームオブジェクトを取得し、最後にレスポンスデータを書き込みます。コンテンツ型とエンコードを含めるのが最適です。
PrintWriter
オブジェクトを使用してレスポンスを返す場合、PrintWriter
オブジェクトにアクセスする前にコンテンツ型を設定します。HTTP では、レスポンス本文の前にヘッダーを送信する必要があるため、サーブレットコンテナーはレスポンスをコミットする前にヘッダーを書き込む必要があります。
可能な場合、Content-Length ヘッダーを(
ServletResponse.setContentLength(int)
メソッドで)設定し、サーブレットコンテナーが永続的な接続を使用してクライアントにレスポンスを返すことができるようにして、パフォーマンスを改善します。レスポンス全体がレスポンスバッファ内に収まる場合、コンテンツの長さは自動的に設定されます。HTTP 1.1 チャンクエンコーディング(レスポンスに Transfer-Encoding ヘッダーがあることを意味する)を使用する場合、Content-Length ヘッダーを設定しないでください。
GET メソッドは安全である必要があります。つまり、ユーザーが責任を負う副作用はありません。例: ほとんどのフォームクエリには副作用がありません。クライアントリクエストが保存されたデータを変更することを目的としている場合、リクエストは他の HTTP メソッドを使用する必要があります。
GET メソッドもべき等である必要があります。つまり、安全に繰り返すことができます。メソッドを安全にすると、べき等にもなります。例: クエリの繰り返しは安全かつべき等ですが、オンラインでの製品の購入やデータの変更は安全でもありません。
リクエストの形式が正しくない場合、
doGet
は HTTP "Bad Request" メッセージを返します。- パラメーター:
req
- クライアントがサーブレットに対して行ったリクエストを含むHttpServletRequest
オブジェクトresp
- サーブレットがクライアントに送信するレスポンスを含むHttpServletResponse
オブジェクト- 例外:
IOExceptionSE
- サーブレットが GET リクエストを処理するときに入力または出力エラーが検出された場合ServletException
- GET のリクエストを処理できなかった場合- 関連事項:
getLastModified
HttpServletRequest
オブジェクトが最後に変更された時刻を、GMT 1970 年 1 月 1 日午前 0 時からのミリ秒単位で返します。時間が不明な場合、このメソッドは負の数(デフォルト)を返します。HTTP GET リクエストをサポートし、最終変更時刻を迅速に決定できるサーブレットは、このメソッドをオーバーライドする必要があります。これにより、ブラウザーとプロキシのキャッシュがより効果的に機能し、サーバーとネットワークリソースの負荷が軽減されます。
- パラメーター:
req
- サーブレットに送信されるHttpServletRequest
オブジェクト- 戻り値:
HttpServletRequest
オブジェクトが最後に変更された時刻を指定するlong
整数、1970 年 1 月 1 日 GMT の午前 0 時からのミリ秒、または時刻が不明の場合は -1
doHead
protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptionSE 保護された
service
メソッドから HTTP HEAD リクエストを受信し、リクエストを処理します。クライアントは、Content-Type や Content-Length などのレスポンスのヘッダーのみを表示する場合に、HEAD リクエストを送信します。HTTP HEAD メソッドは、レスポンスの出力バイトをカウントして、Content-Length ヘッダーを正確に設定します。このメソッドをオーバーライドすると、レスポンス本文の計算を回避し、レスポンスヘッダーを直接設定するだけでパフォーマンスを改善できます。作成する
doHead
メソッドが安全かつべき等であることを確認してください(つまり、1 つの HTTP HEAD リクエストに対して複数回呼び出されることから自身を保護します)。デフォルトの実装は
doGet(HttpServletRequest, HttpServletResponse)
を呼び出します。ServletConfig
初期パラメーターLEGACY_DO_HEAD
が "TRUE" に設定されている場合、レスポンスインスタンスはラップされ、レスポンス本文が破棄されます。HTTP HEAD リクエストの形式が正しくない場合、
doHead
は HTTP の "Bad Request" メッセージを返します。- パラメーター:
req
- サーブレットに渡されるリクエストオブジェクトresp
- サーブレットがヘッダーをクライアントに返すために使用するレスポンスオブジェクト- 例外:
IOExceptionSE
- 入力または出力エラーが発生した場合ServletException
- HEAD のリクエストを処理できなかった場合
doPatch
protected void doPatch(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptionSE サーブレットが PATCH リクエストを処理できるようにするために、サーバーによって (service
メソッド経由で) 呼び出されます。HTTP PATCH リクエストメソッドは、リソースに部分的な変更を適用します。このメソッドをオーバーライドする場合、リクエストデータを読み取り、レスポンスヘッダーを書き込み、レスポンスのライターまたは出力ストリームオブジェクトを取得し、最後にレスポンスデータを書き込みます。コンテンツ型とエンコードを含めるのが最適です。
PrintWriter
オブジェクトを使用してレスポンスを返す場合、PrintWriter
オブジェクトにアクセスする前にコンテンツ型を設定します。HTTP では、レスポンス本文の前にヘッダーを送信する必要があるため、サーブレットコンテナーはレスポンスをコミットする前にヘッダーを書き込む必要があります。
可能な場合、Content-Length ヘッダーを(
ServletResponse.setContentLength(int)
メソッドで)設定し、サーブレットコンテナーが永続的な接続を使用してクライアントにレスポンスを返すことができるようにして、パフォーマンスを改善します。レスポンス全体がレスポンスバッファ内に収まる場合、コンテンツの長さは自動的に設定されます。HTTP 1.1 チャンクエンコーディング(レスポンスに Transfer-Encoding ヘッダーがあることを意味する)を使用する場合、Content-Length ヘッダーを設定しないでください。
このメソッドは安全である必要も冪等である必要もありません。PATCH を通じてリクエストされた操作には、保存されたデータの更新やオンラインでのアイテムの購入など、ユーザーが責任を負う副作用が発生する可能性があります。
HTTP PATCH リクエストの形式が正しくない場合、
doPatch
は HTTP "Bad Request" メッセージを返します。- パラメーター:
req
- クライアントがサーブレットに対して行ったリクエストを含むHttpServletRequest
オブジェクトresp
- サーブレットがクライアントに送信するレスポンスを含むHttpServletResponse
オブジェクト- 例外:
IOExceptionSE
- サーブレットがリクエストを処理するときに入力または出力エラーが検出された場合ServletException
- POST のリクエストを処理できなかった場合- 導入:
- Servlet 6.1
- 関連事項:
doPost
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptionSE サーバーが(service
メソッドを介して)呼び出して、サーブレットが POST リクエストを処理できるようにします。HTTP POST メソッドを使用すると、クライアントは無制限の長さのデータを Web サーバーに一度だけ送信でき、クレジットカード番号などの情報を投稿するときに役立ちます。このメソッドをオーバーライドする場合、リクエストデータを読み取り、レスポンスヘッダーを書き込み、レスポンスのライターまたは出力ストリームオブジェクトを取得し、最後にレスポンスデータを書き込みます。コンテンツ型とエンコードを含めるのが最適です。
PrintWriter
オブジェクトを使用してレスポンスを返す場合、PrintWriter
オブジェクトにアクセスする前にコンテンツ型を設定します。HTTP では、レスポンス本文の前にヘッダーを送信する必要があるため、サーブレットコンテナーはレスポンスをコミットする前にヘッダーを書き込む必要があります。
可能な場合、Content-Length ヘッダーを(
ServletResponse.setContentLength(int)
メソッドで)設定し、サーブレットコンテナーが永続的な接続を使用してクライアントにレスポンスを返すことができるようにして、パフォーマンスを改善します。レスポンス全体がレスポンスバッファ内に収まる場合、コンテンツの長さは自動的に設定されます。HTTP 1.1 チャンクエンコーディング(レスポンスに Transfer-Encoding ヘッダーがあることを意味する)を使用する場合、Content-Length ヘッダーを設定しないでください。
この方法は、安全またはべき等である必要はありません。POST によってリクエストされた操作には、ユーザーが責任を負うことができる副作用があります。たとえば、保存されたデータの更新やオンラインでのアイテムの購入などです。
HTTP POST リクエストの形式が正しくない場合、
doPost
は HTTP の "Bad Request" メッセージを返します。- パラメーター:
req
- クライアントがサーブレットに対して行ったリクエストを含むHttpServletRequest
オブジェクトresp
- サーブレットがクライアントに送信するレスポンスを含むHttpServletResponse
オブジェクト- 例外:
IOExceptionSE
- サーブレットがリクエストを処理するときに入力または出力エラーが検出された場合ServletException
- POST のリクエストを処理できなかった場合- 関連事項:
doPut
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptionSE サーバーによって(service
メソッドを介して)呼び出され、サーブレットが PUT リクエストを処理できるようにします。PUT 操作を使用すると、クライアントはサーバーにファイルを配置でき、FTP でファイルを送信することに似ています。このメソッドをオーバーライドするときは、リクエストで送信されたすべてのコンテンツヘッダーをそのまま残します (Content-Length、Content-Type、Content-Transfer-Encoding、Content-Encoding、Content-Base、Content-Language、Content-Location、Content-MD5、コンテンツ範囲)。メソッドがコンテンツヘッダーを処理できない場合は、エラーメッセージ (HTTP 501 - 実装されていません) を発行し、リクエストを破棄する必要があります。HTTP 1.1 と PUT メソッドの詳細については、RFC 7231 を参照してください。
この方法は、安全またはべき等である必要はありません。
doPut
が実行する操作には、ユーザーが責任を負うことができる副作用があります。この方法を使用する場合、影響を受ける URL のコピーを一時ストレージに保存すると役立つ場合があります。HTTP PUT リクエストの形式が正しくない場合、
doPut
は HTTP の "Bad Request" メッセージを返します。- パラメーター:
req
- クライアントがサーブレットから作成したリクエストを含むHttpServletRequest
オブジェクトresp
- サーブレットがクライアントに返すレスポンスを含むHttpServletResponse
オブジェクト- 例外:
IOExceptionSE
- サーブレットが PUT リクエストを処理しているときに入力または出力エラーが発生した場合ServletException
- PUT のリクエストを処理できない場合
doDelete
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptionSE サーブレットが DELETE リクエストを処理できるようにするために(service
メソッドを介して)サーバーによって呼び出されます。DELETE 操作により、クライアントはサーバーからドキュメントまたは Web ページを削除できます。この方法は、安全またはべき等である必要はありません。DELETE を介してリクエストされた操作には、ユーザーが責任を負うことができる副作用があります。この方法を使用する場合、影響を受ける URL のコピーを一時ストレージに保存すると役立つ場合があります。
HTTP DELETE リクエストの形式が正しくない場合、
doDelete
は HTTP の "Bad Request" メッセージを返します。- パラメーター:
req
- クライアントがサーブレットから作成したリクエストを含むHttpServletRequest
オブジェクトresp
- サーブレットがクライアントに返すレスポンスを含むHttpServletResponse
オブジェクト- 例外:
IOExceptionSE
- サーブレットが DELETE リクエストを処理しているときに入力または出力エラーが発生した場合ServletException
- DELETE のリクエストを処理できない場合
doOptions
protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptionSE サーバーによって(service
メソッドを介して)呼び出され、サーブレットが OPTIONS リクエストを処理できるようにします。OPTIONS リクエストは、サーバーがサポートする HTTP メソッドを決定し、適切なヘッダーを返します。例: サーブレットがdoGet
をオーバーライドする場合、このメソッドは次のヘッダーを返します。Allow: GET, HEAD, TRACE, OPTIONS
サーブレットが HTTP 1.1 によって実装されたものを超える新しい HTTP メソッドを実装しない限り、このメソッドをオーバーライドする必要はありません。
- パラメーター:
req
- クライアントがサーブレットから作成したリクエストを含むHttpServletRequest
オブジェクトresp
- サーブレットがクライアントに返すレスポンスを含むHttpServletResponse
オブジェクト- 例外:
IOExceptionSE
- サーブレットが OPTIONS リクエストを処理しているときに入力または出力エラーが発生した場合ServletException
- OPTIONS のリクエストを処理できない場合
doTrace
protected void doTrace(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptionSE サーバーによって(service
メソッドを介して)呼び出され、サーブレットが TRACE リクエストを処理できるようにします。TRACE は、TRACE リクエストでクライアントに送信されたヘッダーを返すため、デバッグで使用できます。このメソッドをオーバーライドする必要はありません。- パラメーター:
req
- クライアントがサーブレットから作成したリクエストを含むHttpServletRequest
オブジェクトresp
- サーブレットがクライアントに返すレスポンスを含むHttpServletResponse
オブジェクト- 例外:
IOExceptionSE
- サーブレットが TRACE リクエストを処理している間に入力または出力エラーが発生した場合ServletException
- TRACE のリクエストを処理できない場合
isSensitiveHeader
提供された HTTP リクエストヘッダーは機密であるとみなされるため、TRACE
リクエストへのレスポンスから除外する必要がありますか ?デフォルトでは、次のいずれかで始まる名前のヘッダーは機密とみなされます。
- 認可
- クッキー
- x 転送
- 転送されました
- proxy-authorization
HTTP ヘッダー名では大文字と小文字が区別されないことに注意してください。
- パラメーター:
headerName
- テストする HTTP リクエストヘッダーの名前- 戻り値:
- (@code true} HTTP リクエストヘッダーが機密であると見なされ、
TRACE
リクエストへのレスポンスから除外される必要がある場合、それ以外の場合はfalse
- 導入:
- Servlet 6.1
service
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptionSE パブリックservice
メソッドから標準 HTTP リクエストを受信し、このクラスで定義されたdo
XXX メソッドにディスパッチします。このメソッドは、Servlet.service(jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse)
メソッドの HTTP 固有のバージョンです。このメソッドをオーバーライドする必要はありません。- パラメーター:
req
- クライアントがサーブレットから作成したリクエストを含むHttpServletRequest
オブジェクトresp
- サーブレットがクライアントに返すレスポンスを含むHttpServletResponse
オブジェクト- 例外:
IOExceptionSE
- サーブレットが HTTP リクエストを処理しているときに入力または出力エラーが発生した場合ServletException
- HTTP リクエストを処理できない場合- 関連事項:
service
保護されたservice
メソッドにクライアントリクエストをディスパッチします。このメソッドをオーバーライドする必要はありません。- 次で指定:
- インターフェース
Servlet
のservice
- 次で指定:
- クラス
GenericServlet
のservice
- パラメーター:
req
- クライアントがサーブレットから作成したリクエストを含むHttpServletRequest
オブジェクトres
- サーブレットがクライアントに返すレスポンスを含むHttpServletResponse
オブジェクト- 例外:
IOExceptionSE
- サーブレットが HTTP リクエストを処理しているときに入力または出力エラーが発生した場合ServletException
- HTTP リクエストを処理できない場合、またはいずれかのパラメーターが対応するHttpServletRequest
またはHttpServletResponse
のインスタンスのインスタンスではない場合- 関連事項: