パッケージ jakarta.servlet

インターフェース ServletResponse

  • すべての既知のサブインターフェース:
    HttpServletResponse
    すべての既知の実装クラス:
    HttpServletResponseWrapperServletResponseWrapper

    public interface ServletResponse
    サーブレットがクライアントにレスポンスを送信するのを支援するオブジェクトを定義します。サーブレットコンテナーは ServletResponse オブジェクトを作成し、それを引数としてサーブレットの service メソッドに渡します。

    MIME 本文レスポンスでバイナリデータを送信するには、getOutputStream() によって返される ServletOutputStream を使用します。文字データを送信するには、getWriter() によって返される PrintWriter オブジェクトを使用します。たとえば、バイナリデータとテキストデータを混在させて、マルチパートレスポンスを作成するには、ServletOutputStream を使用して、文字セクションを手動で管理します。

    MIME 本文レスポンスの文字セットは、リクエストごと、Web アプリごと(ServletContext.setRequestCharacterEncoding(java.lang.String)、デプロイ記述子を使用)、コンテナーごと(ベンダー固有の構成を使用して、そのコンテナーにデプロイされたすべての Web アプリケーションの場合)のいずれかの手法を使用して明示的に指定できます)。上記の手法が複数使用されている場合、優先順位はリストされている順序です。リクエストごとに、レスポンスの文字セットは、setCharacterEncoding(java.lang.String) および setContentType(java.lang.String) メソッドを使用して明示的に指定することも、setLocale(java.util.Locale) メソッドを使用して暗黙的に指定することもできます。明示的な仕様は、暗黙的な仕様よりも優先されます。文字セットが明示的に指定されていない場合は、ISO-8859-1 が使用されます。setCharacterEncodingsetContentTypesetLocale メソッドは、getWriter の前、使用する文字エンコードのレスポンスをコミットする前に呼び出す必要があります。

    MIME の詳細については、RFC 2045 などのインターネット RFC を参照してください。SMTP や HTTP などのプロトコルは、MIME のプロファイルを定義し、それらの標準はまだ進化しています。

    作成者:
    Various
    関連事項:
    ServletOutputStream
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   抽象メソッド  
      修飾子と型 メソッド 説明
      voidflushBuffer()
      バッファ内のコンテンツを強制的にクライアントに書き込みます。
      intgetBufferSize()
      レスポンスに使用される実際のバッファサイズを返します。
      StringSEgetCharacterEncoding()
      このレスポンスで送信される本文に使用される文字エンコード(MIME 文字セット)の名前を返します。
      StringSEgetContentType()
      このレスポンスで送信される MIME 本文に使用されるコンテンツ型を返します。
      LocaleSEgetLocale()
      setLocale(java.util.Locale) メソッドを使用して、このレスポンスに指定されたロケールを返します。
      ServletOutputStreamgetOutputStream()
      レスポンスにバイナリデータを書き込むのに適した ServletOutputStream を返します。
      PrintWriterSEgetWriter()
      クライアントに文字テキストを送信できる PrintWriter オブジェクトを返します。
      booleanisCommitted()
      レスポンスがコミットされたかどうかを示すブール値を返します。
      voidreset()
      バッファーに存在するすべてのデータとステータスコード、ヘッダーをクリアします。
      voidresetBuffer()
      ヘッダーまたはステータスコードをクリアせずに、レスポンスの基になるバッファのコンテンツをクリアします。
      voidsetBufferSize​(int size)
      レスポンスの本文の優先バッファサイズを設定します。
      voidsetCharacterEncoding​(StringSE charset)
      クライアントに送信されるレスポンスの文字エンコード(MIME 文字セット)を、たとえば UTF-8 に設定します。
      voidsetContentLength​(int len)
      レスポンス内のコンテンツ本文の長さを設定します。HTTP サーブレットでは、このメソッドは HTTP Content-Length ヘッダーを設定します。
      voidsetContentLengthLong​(long len)
      レスポンス内のコンテンツ本文の長さを設定します。HTTP サーブレットでは、このメソッドは HTTP Content-Length ヘッダーを設定します。
      voidsetContentType​(StringSE type)
      レスポンスがまだコミットされていない場合、クライアントに送信されるレスポンスのコンテンツ型を設定します。
      voidsetLocale​(LocaleSE loc)
      レスポンスがまだコミットされていない場合、レスポンスのロケールを設定します。
    • メソッドの詳細

      • getCharacterEncoding

        StringSE getCharacterEncoding()
        このレスポンスで送信された本文に使用される文字エンコーディング (MIME 文字セット) の名前を返します。レスポンスの文字エンコーディングを指定するための次のメソッドが、優先度の高い順に参照されます: リクエストごと、Web アプリごと (ServletContext.setResponseCharacterEncoding(java.lang.String)、デプロイ記述子を使用)、およびコンテナーごと (ベンダー固有の構成を使用して、そのコンテナーにデプロイされたすべての Web アプリケーション)。これらのメソッドのうち、最初に結果が得られたものが返されます。リクエストごとに、レスポンスの文字セットは、setCharacterEncoding(java.lang.String) メソッドと setContentType(java.lang.String) メソッドを使用して明示的に指定するか、setLocale(java.util.Locale) メソッドを使用して暗黙的に指定できます。明示的な指定は暗黙的な指定よりも優先されます。getWriter が呼び出された後、またはレスポンスがコミットされた後にこれらのメソッドを呼び出しても、文字エンコーディングには影響しません。文字エンコーディングが指定されていない場合は、ISO-8859-1 が返されます。

        文字エンコードと MIME の詳細については、RFC 2047(http://www.ietf.org/rfc/rfc2047.txt) を参照してください。

        戻り値:
        文字エンコードの名前を指定する String、たとえば UTF-8
      • getContentType

        StringSE getContentType()
        このレスポンスで送信される MIME 本文に使用されるコンテンツ型を返します。レスポンスをコミットする前に、setContentType(java.lang.String) を使用して適切なコンテンツ型を指定する必要があります。コンテンツ型が指定されていない場合、このメソッドは null を返します。コンテンツ型が指定されており、getCharacterEncoding() または getWriter() に従って文字エンコードが明示的または暗黙的に指定されている場合、charset パラメーターは返される文字列に含まれます。文字エンコードが指定されていない場合、charset パラメーターは省略されます。
        戻り値:
        text/html; charset=UTF-8 などのコンテンツ型を指定する String または null
        導入:
        Servlet 2.4
      • getOutputStream

        ServletOutputStream getOutputStream()
                                     throws IOExceptionSE
        レスポンスにバイナリデータを書き込むのに適した ServletOutputStream を返します。サーブレットコンテナーはバイナリデータをエンコードしません。

        ServletOutputStream で flush() を呼び出すと、レスポンスがコミットされます。reset() が呼び出された場合を除き、このメソッドまたは getWriter() のいずれかを呼び出して、両方ではなく本体を書き込むことができます。

        戻り値:
        バイナリデータを書き込むための ServletOutputStream
        例外:
        IllegalStateExceptionSE - getWriter メソッドがこのレスポンスで呼び出された場合
        IOExceptionSE - 入力または出力の例外が発生した場合
        関連事項:
        getWriter(), reset()
      • getWriter

        PrintWriterSE getWriter()
                       throws IOExceptionSE
        クライアントに文字テキストを送信できる PrintWriter オブジェクトを返します。PrintWriter は、getCharacterEncoding() によって返される文字エンコードを使用します。getCharacterEncoding に従って、レスポンスの文字エンコードが指定されていない場合(つまり、メソッドはデフォルト値 ISO-8859-1 を返すだけ)、getWriter はそれを ISO-8859-1 に更新します。

        PrintWriter で flush() を呼び出すと、レスポンスがコミットされます。

        reset() が呼び出された場合を除き、このメソッドまたは getOutputStream() のいずれかを呼び出して、両方ではなく本体を書き込むことができます。

        戻り値:
        クライアントに文字データを返すことができる PrintWriter オブジェクト
        例外:
        UnsupportedEncodingExceptionSE - getCharacterEncoding によって返された文字エンコードを使用できない場合
        IllegalStateExceptionSE - getOutputStream メソッドがこのレスポンスオブジェクトに対してすでに呼び出されている場合
        IOExceptionSE - 入力または出力の例外が発生した場合
        関連事項:
        getOutputStream(), setCharacterEncoding(java.lang.String), reset()
      • setCharacterEncoding

        void setCharacterEncoding​(StringSE charset)
        クライアントに送信されるレスポンスの文字エンコード (MIME charset) を UTF-8 などに設定します。レスポンスの文字エンコーディングが ServletContext.setResponseCharacterEncoding(java.lang.String)、デプロイ記述子によって、または setContentType(java.lang.String) または setLocale(java.util.Locale) メソッドを使用してすでに設定されている場合、このメソッドで設定された値はそれらのすべての値をオーバーライドします。text/html の String で setContentType(java.lang.String) を呼び出し、UTF-8 の String でこのメソッドを呼び出すことは、text/html; charset=UTF-8 の String で setContentType(java.lang.String) を呼び出すことと同じです。

        このメソッドを繰り返し呼び出して、文字エンコーディングを変更できます。getWriter が呼び出された後、またはレスポンスがコミットされた後に呼び出された場合、このメソッドは効果がありません。

        このメソッドを呼び出すと (前の段落のように) 効果がある場合、null を使用してこのメソッドを呼び出すと、このメソッド setContentType(java.lang.String) または setLocale(java.util.Locale) への以前の呼び出しを介して設定された文字エンコーディングがクリアされますが、ServletContext.setResponseCharacterEncoding(java.lang.String) または デプロイを介して構成されたデフォルトの文字エンコーディングには影響しません。ディスクリプタ。

        このメソッドが無効または認識されない文字エンコーディングで呼び出された場合、その後 getWriter() を呼び出すと UnsupportedEncodingExceptionSE がスローされます。不明なエンコーディングのコンテンツは、getOutputStream() から返された ServletOutputStream で送信できます。

        コンテナーは、無効または認識されない文字エンコーディングを使用するこのメソッドへの呼び出しをログに記録することを選択できます。

        プロトコルがその方法を提供する場合、コンテナーは、サーブレットレスポンスのライターに使用される文字エンコーディングをクライアントに伝える必要があります。HTTP の場合、文字エンコードは、テキストメディア型の Content-Type ヘッダーの一部として通信されます。サーブレットがコンテンツ型を指定しない場合、文字エンコードは HTTP ヘッダーを介して通信できないことに注意してください。ただし、サーブレットレスポンスのライターを介して書き込まれたテキストのエンコードには引き続き使用されます。

        パラメーター:
        charset - IANA 文字セット (http://www.iana.org/assignments/character-sets) または null) によって定義された文字セットのみを指定する文字列
        導入:
        Servlet 2.4
        関連事項:
        setContentType(java.lang.String), setLocale(java.util.Locale)
      • setContentLength

        void setContentLength​(int len)
        レスポンス内のコンテンツ本文の長さを設定します。HTTP サーブレットでは、このメソッドは HTTP Content-Length ヘッダーを設定します。
        パラメーター:
        len - クライアントに返されるコンテンツの長さを指定する整数。Content-Length ヘッダーを設定します
      • setContentLengthLong

        void setContentLengthLong​(long len)
        レスポンス内のコンテンツ本文の長さを設定します。HTTP サーブレットでは、このメソッドは HTTP Content-Length ヘッダーを設定します。
        パラメーター:
        len - クライアントに返されるコンテンツの長さを指定する long; Content-Length ヘッダーを設定します
        導入:
        Servlet 3.1
      • setContentType

        void setContentType​(StringSE type)
        レスポンスがまだコミットされていない場合、クライアントに送信されるレスポンスのコンテンツ型を設定します。指定されたコンテンツ型には、文字エンコーディング仕様 ( text/html;charset=UTF-8 など) が含まれる場合があります。レスポンスの文字エンコーディングは、getWriter() が呼び出される前にこのメソッドが呼び出された場合にのみ、指定されたコンテンツ型から設定されます。

        このメソッドは、コンテンツ型と文字エンコーディングを変更するために繰り返し呼び出される場合があります。このメソッドは、レスポンスがコミットされた後に呼び出されても効果がありません。getWriter が呼び出された後、またはレスポンスがコミットされた後に呼び出された場合、レスポンスの文字エンコードは設定されません。

        このメソッドを呼び出すと (前の段落のように) 効果がある場合、null を指定してこのメソッドを呼び出すと、このメソッドへの以前の呼び出しによって設定されたコンテンツ型がすべてクリアされ、このメソッド (setCharacterEncoding(java.lang.String) または setLocale(java.util.Locale)) への以前の呼び出しによって設定された文字エンコーディングがクリアされますが、ServletContext.setResponseCharacterEncoding(java.lang.String) または デプロイ記述子を介して構成されたデフォルトの文字エンコーディングには影響しません。

        このメソッドが無効または認識されない文字エンコーディングで呼び出された場合、その後 getWriter() を呼び出すと UnsupportedEncodingExceptionSE がスローされます。不明なエンコーディングのコンテンツは、getOutputStream() から返された ServletOutputStream で送信できます。

        コンテナーは、無効または認識されない文字エンコーディングを使用するこのメソッドへの呼び出しをログに記録することを選択できます。

        プロトコルがそうする方法を提供する場合、コンテナーはサーブレットレスポンスのライターに使用されるコンテンツ型と文字エンコーディングをクライアントに通信する必要があります。HTTP の場合、Content-Type ヘッダーが使用されます。

        パラメーター:
        type - コンテンツの MIME 型を指定する String または null
        関連事項:
        setLocale(java.util.Locale), setCharacterEncoding(java.lang.String), getOutputStream(), getWriter()
      • setBufferSize

        void setBufferSize​(int size)
        レスポンスの本文の優先バッファサイズを設定します。サーブレットコンテナーは、少なくともリクエストされたサイズと同じ大きさのバッファを使用します。使用される実際のバッファサイズは、getBufferSize を使用して見つけることができます。

        バッファを大きくすると、実際に何かが送信される前により多くのコンテンツを書き込むことができるため、サーブレットに適切なステータスコードとヘッダーを設定する時間をより多く提供できます。バッファを小さくすると、サーバーのメモリ負荷が減少し、クライアントがデータをより早く受信できるようになります。

        このメソッドは、レスポンス本文のコンテンツが書き込まれる前に呼び出す必要があります。コンテンツが書き込まれた場合、またはレスポンスオブジェクトがコミットされた場合、このメソッドは IllegalStateException をスローします。

        パラメーター:
        size - 優先バッファサイズ
        例外:
        IllegalStateExceptionSE - コンテンツが書き込まれた後にこのメソッドが呼び出された場合
        関連事項:
        getBufferSize(), flushBuffer(), isCommitted(), reset()
      • getBufferSize

        int getBufferSize()
        レスポンスに使用される実際のバッファサイズを返します。バッファリングが使用されていない場合、このメソッドは 0 を返します。
        戻り値:
        使用される実際のバッファサイズ
        関連事項:
        setBufferSize(int), flushBuffer(), isCommitted(), reset()
      • flushBuffer

        void flushBuffer()
                  throws IOExceptionSE
        バッファ内のコンテンツを強制的にクライアントに書き込みます。このメソッドを呼び出すと、レスポンスが自動的にコミットされます。つまり、ステータスコードとヘッダーが書き込まれます。
        例外:
        IOExceptionSE - バッファをフラッシュする動作を完了できない場合。
        関連事項:
        setBufferSize(int), getBufferSize(), isCommitted(), reset()
      • resetBuffer

        void resetBuffer()
        ヘッダーまたはステータスコードをクリアせずに、レスポンスの基になるバッファのコンテンツをクリアします。レスポンスがコミットされている場合、このメソッドは IllegalStateException をスローします。
        導入:
        Servlet 2.3
        関連事項:
        setBufferSize(int), getBufferSize(), isCommitted(), reset()
      • isCommitted

        boolean isCommitted()
        レスポンスがコミットされたかどうかを示すブール値を返します。コミットされたレスポンスには、すでにステータスコードとヘッダーが書き込まれています。
        戻り値:
        レスポンスがコミットされたかどうかを示すブール値
        関連事項:
        setBufferSize(int), getBufferSize(), flushBuffer(), reset()
      • setLocale

        void setLocale​(LocaleSE loc)
        レスポンスがまだコミットされていない場合、レスポンスのロケールを設定します。また、setContentType(java.lang.String) または setCharacterEncoding(java.lang.String) を使用して文字エンコーディングが明示的に設定されておらず、getWriter がまだ呼び出されておらず、レスポンスがまだコミットされていない場合、ロケールのレスポンスに適切に文字エンコーディングを設定します。デプロイ記述子に locale-encoding-mapping-list 要素が含まれ、その要素が指定されたロケールのマッピングを提供する場合、そのマッピングが使用されます。それ以外の場合、ロケールから文字エンコーディングへのマッピングはコンテナーに依存します。

        このメソッドは、ロケールと文字エンコーディングを変更するために繰り返し呼び出される場合があります。レスポンスがコミットされた後に呼び出された場合、メソッドは効果がありません。setContentType(java.lang.String) が文字セット指定で呼び出された後、setCharacterEncoding(java.lang.String) が呼び出された後、getWriter が呼び出された後、レスポンスがコミットされた後に呼び出された場合、レスポンスの文字エンコードは設定されません。

        このメソッドの呼び出しが (前の段落のように) ロケールに影響を与える場合、null を指定してこのメソッドを呼び出すと、このメソッドへの以前の呼び出しで設定されたすべてのロケールがクリアされます。このメソッドの呼び出しが文字エンコーディングに影響する場合、null でこのメソッドを呼び出すと、以前に設定された文字エンコーディングがクリアされます。

        プロトコルがその方法を提供する場合、コンテナーは、サーブレットレスポンスのライタに使用されるロケールと文字エンコーディングをクライアントに伝える必要があります。HTTP の場合、ロケールは、Content-Language ヘッダー、テキストメディア型の Content-Type ヘッダーの一部としての文字エンコードを介して通信されます。サーブレットがコンテンツ型を指定しない場合、文字エンコードは HTTP ヘッダーを介して通信できないことに注意してください。ただし、サーブレットレスポンスのライターを介して書き込まれたテキストのエンコードには引き続き使用されます。

        パラメーター:
        loc - レスポンスのロケールまたは {code @null}
        関連事項:
        getLocale(), setContentType(java.lang.String), setCharacterEncoding(java.lang.String)
      • getLocale

        LocaleSE getLocale()
        setLocale(java.util.Locale) メソッドを使用して、このレスポンスに指定されたロケールを返します。レスポンスのコミット後に setLocale を呼び出しても効果はありません。ロケールが指定されていない場合、コンテナーのデフォルトのロケールが返されます。
        戻り値:
        このレスポンスのロケール。
        関連事項:
        setLocale(java.util.Locale)