パッケージ jakarta.servlet.http

クラス HttpServlet

  • 実装されたすべてのインターフェース:
    ServletServletConfigSerializableSE

    public abstract class HttpServlet
    extends GenericServlet
    サブクラス化する抽象クラスを提供して、Web サイトに適した HTTP サーブレットを作成します。HttpServlet のサブクラスは、少なくとも 1 つのメソッド、通常は次のいずれかをオーバーライドする必要があります。
    • doGet、サーブレットが HTTP GET リクエストをサポートする場合
    • doPost、HTTP POST リクエスト用
    • doPut、HTTP PUT リクエスト用
    • doDelete、HTTP DELETE リクエスト用
    • init および destroy、サーブレットの存続期間中保持されるリソースを管理する
    • getServletInfo、サーブレットは自身に関する情報を提供するために使用します

    service メソッドをオーバーライドする理由はほとんどありません。service は、HTTP リクエスト型ごとにハンドラーメソッド(上記の doXXX メソッド)にディスパッチすることにより、標準の HTTP リクエストを処理します。

    同様に、doOptions メソッドと doTrace メソッドをオーバーライドする理由はほとんどありません。

    サーブレットは通常マルチスレッドサーバーで実行されるため、サーブレットは同時リクエストを処理する必要があることに注意し、共有リソースへのアクセスを同期するよう注意してください。共有リソースには、インスタンス変数やクラス変数などのメモリ内データと、ファイル、データベース接続、ネットワーク接続などの外部オブジェクトが含まれます。Java プログラムでの複数のスレッドの処理の詳細については、マルチスレッドプログラミングに関する Java チュートリアルSEを参照してください。

    作成者:
    Various
    関連事項:
    直列化された形式
    • コンストラクターの詳細

      • HttpServlet

        public HttpServlet()
        これは抽象クラスであるため、何もしません。
    • メソッドの詳細

      • init

        public void init​(ServletConfig config)
                  throws ServletException
        クラスからコピーされた説明: GenericServlet
        サーブレットがサービスに配置されていることをサーブレットに示すために、サーブレットコンテナーによって呼び出されます。Servlet.init(jakarta.servlet.ServletConfig) を参照してください。

        この実装は、後で使用するためにサーブレットコンテナーから受け取った ServletConfig オブジェクトを格納します。この形式のメソッドをオーバーライドするときは、super.init(config) を呼び出します。

        次で指定:
        インターフェース Servletinit 
        オーバーライド:
        クラス GenericServletinit 
        パラメーター:
        config - このサーブレットの構成情報を含む ServletConfig オブジェクト
        例外:
        ServletException - サーブレットの通常の操作を中断する例外が発生した場合
        関連事項:
        UnavailableException
      • 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 のリクエストを処理できなかった場合
        関連事項:
        ServletResponse.setContentType(java.lang.String)
      • getLastModified

        protected long getLastModified​(HttpServletRequest req)
        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 のリクエストを処理できなかった場合
      • 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 のリクエストを処理できなかった場合
        関連事項:
        ServletOutputStream, ServletResponse.setContentType(java.lang.String)
      • 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 のリクエストを処理できない場合