Package nablarch.fw.web
Class HttpResponse
java.lang.Object
nablarch.fw.web.HttpResponse
- All Implemented Interfaces:
Result
- Direct Known Subclasses:
DataRecordResponse
,EntityResponse
,FileResponse
,StreamResponse
HTTPレスポンスメッセージを生成する際に必要な情報を格納したクラス。
HTTPクライアントに対するレスポンス処理をフレームワークが行うために必要な
以下の情報を保持する。
メモリ消費の観点や、コンテンツファイル管理の容易さから、 通常はコンテンツパスによる方式を使用すべきである。
- レスポンスステータスコード
- レスポンスヘッダ
- レスポンスボディ
- 内容をこのオブジェクトに直接保持する方式(バッファ方式)
- ボディに書き込むコンテンツファイルのパスのみを指定する方式(コンテンツパス方式)
setContentPath(String)
の値を設定することで後者の方式がとられるようになる。メモリ消費の観点や、コンテンツファイル管理の容易さから、 通常はコンテンツパスによる方式を使用すべきである。
- Author:
- Iwauo Tajima <iwauo@tis.co.jp>, Masato Inoue
-
Nested Class Summary
Nested classes/interfaces inherited from interface nablarch.fw.Result
Result.ClientError, Result.Error, Result.MultiStatus, Result.NotFound, Result.Success
-
Field Summary
-
Constructor Summary
ConstructorDescriptionHttpResponse
オブジェクトを生成する。HttpResponse
(int statusCode) 指定されたステータスコードのHttpResponse
オブジェクトを生成する。HttpResponse
(int statusCode, String contentPath) 指定されたHTTPステータスコードとコンテンツパスのHttpResponse
オブジェクトを生成する。HttpResponse
(String contentPath) 指定されたコンテンツパスのHttpResponse
オブジェクトを生成する。 -
Method Summary
Modifier and TypeMethodDescriptionaddCookie
(HttpCookie cookie) サーバ側から送信されたクッキー情報を設定する。cleanup()
リソースを開放する。HTTPレスポンスボディの内容を保持するストリームを取得する。HTTPレスポンスボディの内容を表す文字列を返す。Content-Typeに指定された文字エンコーディングを取得する。Content-Dispositionの値を取得する。Content-Lengthの値を取得する。コンテンツパスを取得する。Content-Typeの値を取得する。Deprecated.List<jakarta.servlet.http.Cookie>
サーバ側から送信されたクッキー情報のリストを取得する。HTTPレスポンスヘッダの値を返す。HTTPレスポンスヘッダを格納するMapを返す。サーバ側から送信されたクッキーのリストをHttpCookie
として取得する。HttpCookie
は同じ属性を持つ複数のクッキーを保持する仕様であるため、 クッキーの属性が各々異なることを考慮し、リストとして返却する。HTTPバージョンを表す文字列を返す。Locationの値を取得する。処理結果に対する詳細情報を返す。HTTPレスポンスのステータスフレーズを返す。int
HTTPレスポンスのステータスコードの値を返す。Transfer-Encodingの値を取得する。boolean
HTTPレスポンスボディの内容が設定されていなければtrue
を返す。boolean
処理が正常終了したかどうかを返す。static HttpResponse
parse
(byte[] message) HTTPレスポンスメッセージの内容からHttpResponse
オブジェクトを生成する。static HttpResponse
HTTPレスポンスメッセージの内容からHttpResponse
オブジェクトを生成する。setBodyStream
(InputStream bodyStream) HTTPレスポンスボディの内容を保持するストリームを設定する。setContentDisposition
(String fileName) Content-Dispositionの値を設定する。setContentDisposition
(String fileName, boolean inline) Content-Dispositionの値を設定する。setContentPath
(String path) コンテンツパスを設定する。setContentPath
(ResourceLocator resource) コンテンツパスを設定する。setContentType
(String contentType) Content-Typeを設定する。setCookie
(HttpCookie cookie) Deprecated.本メソッドは、複数のクッキー情報を設定することを意図したメソッド名を持つaddCookie(HttpCookie)
に置き換わりました。void
HTTPレスポンスヘッダの値を設定する。setHttpVersion
(String httpVersion) HTTPバージョンを設定する。setLocation
(String location) Locationの値を設定する。setStatusCode
(int code) HTTPレスポンスのステータスコードを設定する。setTransferEncoding
(String encoding) Transfer-Encodingの値を設定する。toString()
オブジェクトの内容と等価なHTTPレスポンスメッセージを返す。write
(byte[] bytes) HTTPレスポンスボディにバイト配列を書き込む。write
(CharSequence text) HTTPレスポンスボディに文字列を書き込む。write
(ByteBuffer bytes) HTTPレスポンスボディにバイト配列を書き込む。
-
Field Details
-
LS
HTTP行終端文字(CRLF)- See Also:
-
CONTENT_DISPOSITION
Content-Dispositionヘッダ。- See Also:
-
-
Constructor Details
-
HttpResponse
HttpResponse
オブジェクトを生成する。 以下のHTTPレスポンスメッセージに相当するHttpResponse
オブジェクトを生成する。HTTP/1.1 200 OK Content-Type: text/plain;charset=UTF-8
-
HttpResponse
指定されたステータスコードのHttpResponse
オブジェクトを生成する。 このメソッドの処理は以下のソースコードと等価である。new HttpResponse().setStatusCode(statusCode);
- Parameters:
statusCode
- HTTPステータスコード
-
HttpResponse
指定されたHTTPステータスコードとコンテンツパスのHttpResponse
オブジェクトを生成する。 このメソッドの処理は以下のソースコードと等価である。new HttpResponse().setStatusCode(statusCode) .setContentPath(contentPath);
- Parameters:
statusCode
- HTTPステータスコードcontentPath
- コンテンツパス
-
HttpResponse
指定されたコンテンツパスのHttpResponse
オブジェクトを生成する。 このメソッドの処理は以下のソースコードと等価である。new HttpResponse().setStatusCode(200) .setContentPath(contentPath);
- Parameters:
contentPath
- コンテンツパス
-
-
Method Details
-
parse
HTTPレスポンスメッセージの内容からHttpResponse
オブジェクトを生成する。- Parameters:
message
- HTTPレスポンスメッセージ- Returns:
- HTTPレスポンスメッセージの内容に対応した
HttpResponse
オブジェクト
-
parse
HTTPレスポンスメッセージの内容からHttpResponse
オブジェクトを生成する。- Parameters:
message
- HTTPレスポンスメッセージ- Returns:
- HTTPレスポンスメッセージの内容に対応した
HttpResponse
オブジェクト
-
getStatusCode
HTTPレスポンスのステータスコードの値を返す。 HTTPレスポンスがリダイレクトである場合は302
を返す。- Specified by:
getStatusCode
in interfaceResult
- Returns:
- HTTPステータスコード
- See Also:
-
setStatusCode
HTTPレスポンスのステータスコードを設定する。 デフォルトのステータスコードは200
である。- Parameters:
code
- HTTPステータスコード- Returns:
- 本オブジェクト
- Throws:
IllegalArgumentException
- 指定されたステータスコードが無効な場合
-
getReasonPhrase
HTTPレスポンスのステータスフレーズを返す。- Returns:
- ステータスフレーズ
-
getMessage
処理結果に対する詳細情報を返す。 返される詳細情報は以下の通りである。(ステータスコード): (ステータスフレーズ)
- Specified by:
getMessage
in interfaceResult
- Returns:
- 詳細情報
-
getHttpVersion
HTTPバージョンを表す文字列を返す。- Returns:
- HTTPバージョン名
-
setHttpVersion
HTTPバージョンを設定する。 デフォルト値は "HTTP/1.1" である。- Parameters:
httpVersion
- HTTPバージョン名- Returns:
- 本オブジェクト
- Throws:
IllegalArgumentException
- HTTPバージョンの書式が無効な場合
-
getHeaderMap
HTTPレスポンスヘッダを格納するMapを返す。 このMapに対する変更はレスポンスヘッダの内容に直接反映される。- Returns:
- HTTPレスポンスヘッダを格納するMap
-
getHeader
HTTPレスポンスヘッダの値を返す。- Parameters:
headerName
- ヘッダー名- Returns:
- ヘッダーの値
-
setHeader
HTTPレスポンスヘッダの値を設定する。- Parameters:
headerName
- ヘッダー名value
- ヘッダーの値
-
getContentType
Content-Typeの値を取得する。 Content-Typeが設定されている場合は、以下のソースコードと等価である。
Content-Typeが設定されていない場合は、以下の処理を行う。this.headers().get("Content-Type")
・WebConfig.getAddDefaultContentTypeForNoBodyResponse()
がtrueの場合、 またはボディが存在する場合に"text/plain;charset=UTF-8"を設定する。- Returns:
- Contents-Typeの値
-
getCharset
Content-Typeに指定された文字エンコーディングを取得する。- Returns:
- 文字エンコーディング
-
setContentType
Content-Typeを設定する。 Content-Typeのデフォルト値は、"text/plain;charset=UTF-8" である。
ボディに書き込む内容をコンテンツパスで指定する場合、 Content-Typeはコンテンツパスの拡張子から自動的に決定される為、 このメソッドを明示的に使用する必要は無い。- Parameters:
contentType
- Content-Typeの値- Returns:
- 本オブジェクト
- See Also:
-
getLocation
Locationの値を取得する。 このメソッドの処理は以下のソースコードと等価である。this.headers().get("Location")
- Returns:
- Locationの値
-
setLocation
Locationの値を設定する。 リダイレクト時のHTTPクライアントの遷移先URIを設定する。
デフォルトでは設定されない。- Parameters:
location
- 遷移先URI- Returns:
- 本オブジェクト
- See Also:
-
setContentDisposition
Content-Dispositionの値を設定する。 Content-Typeが明示的に設定されていない場合、 設定されたファイル名の拡張子に応じたContent-Typeを自動的に設定する。
本メソッドではattachment属性を指定するため、ダウンロード時にダイアログが必ず表示される。- Parameters:
fileName
- ファイル名- Returns:
- 本オブジェクト
-
setContentDisposition
Content-Dispositionの値を設定する。 Content-Typeが明示的に設定されていない場合、 設定されたファイル名の拡張子に応じたContent-Typeを自動的に設定する。
inline
にtrue
を指定した場合、ダウンロードされたファイルは クライアントアプリで自動的に開かれる。
ただし、実際にそのような挙動となるかどうかは、クライアントの設定 およびOSのセキュリティ設定に依存する。- Parameters:
fileName
- ファイル名inline
- インライン表示する場合はtrue
- Returns:
- 本オブジェクト
-
getContentDisposition
Content-Dispositionの値を取得する。- Returns:
- Content-Dispositionの値
-
getTransferEncoding
Transfer-Encodingの値を取得する。 このメソッドの処理は以下のソースコードと等価である。this.headers().get("Transfer-Encoding")
- Returns:
- Transfer-Encodingの値
-
setTransferEncoding
Transfer-Encodingの値を設定する。 このヘッダの値が"chunked"であった場合、 コンテンツボディはchunked-encodingに従って読み書きされる。
デフォルトではこのヘッダは設定されない。- Parameters:
encoding
- Transfer-Encodingの値- Returns:
- 本オブジェクト
- See Also:
-
getCookie
Deprecated.本メソッドは、複数のクッキー情報のうち先頭のクッキーを返すことしかできません。 複数のクッキー情報を返すことができるgetCookieList()
を使用してください。サーバ側から送信されたクッキー情報のうち先頭のクッキーをを取得する。- Returns:
- サーバ側から送信されたクッキー情報のうち先頭のクッキー。クッキーが存在しない場合は
null
-
getCookieList
サーバ側から送信されたクッキー情報のリストを取得する。- Returns:
- クッキー情報のリスト
-
getHttpCookies
サーバ側から送信されたクッキーのリストをHttpCookie
として取得する。HttpCookie
は同じ属性を持つ複数のクッキーを保持する仕様であるため、 クッキーの属性が各々異なることを考慮し、リストとして返却する。- Returns:
- クッキー (
HttpCookie
)のリスト
-
setCookie
Deprecated.本メソッドは、複数のクッキー情報を設定することを意図したメソッド名を持つaddCookie(HttpCookie)
に置き換わりました。サーバ側から送信されたクッキー情報を設定する。- Parameters:
cookie
- クッキー情報オブジェクト- Returns:
- 本オブジェクト
-
addCookie
サーバ側から送信されたクッキー情報を設定する。- Parameters:
cookie
- クッキー情報オブジェクト- Returns:
- 本オブジェクト
-
setContentPath
コンテンツパスを設定する。 本処理はsetContentPath(ResourceLocator)
に委譲する。- Parameters:
path
- コンテンツパス- Returns:
- 本オブジェクト
-
setContentPath
コンテンツパスを設定する。 指定したResourceLocator
オブジェクトがnull
でない場合は、 リソース名からContent-Typeを自動的に設定した後、コンテンツパスを設定する。
ResourceLocator
オブジェクトがnull
の場合は、コンテンツパスのみ設定する。- Parameters:
resource
- コンテンツパス- Returns:
- 本オブジェクト
- See Also:
-
getContentPath
コンテンツパスを取得する。 HTTPレスポンスボディに書き込むコンテンツパスを取得する。- Returns:
- コンテンツパス
-
getContentLength
Content-Lengthの値を取得する。 HTTPレスポンスボディの内容がこのオブジェクト自体に保持されている場合に限り、 そのバイト数を返す。
それ以外はnull
を返す。- Returns:
- Content-Lengthの値
-
cleanup
リソースを開放する。- Returns:
- 本オブジェクト
-
isBodyEmpty
HTTPレスポンスボディの内容が設定されていなければtrue
を返す。- Returns:
- ボディの内容が設定されていなければ
true
-
getBodyString
HTTPレスポンスボディの内容を表す文字列を返す。- Returns:
- ボディの内容を表す文字列を返す
-
getBodyStream
HTTPレスポンスボディの内容を保持するストリームを取得する。- Returns:
- HTTPレスポンスボディの内容を保持するストリーム
-
setBodyStream
HTTPレスポンスボディの内容を保持するストリームを設定する。- Parameters:
bodyStream
- HTTPレスポンスボディの内容を保持するストリーム- Returns:
- 本オブジェクト
-
write
HTTPレスポンスボディに文字列を書き込む。 このメソッドで書き込まれたデータは、本オブジェクトが保持する バッファに保持され、クライアントソケットに対する書き込みは一切発生しない。 (このライタに対するflush()は単に無視される。)
実際にソケットに対するレスポンス処理が行われるのは、HttpResponseHandler
にレスポンスオブジェクトが戻された後である。 また、このオブジェクトにコンテンツパスが設定されている場合、 このライタに書き込まれた内容は単に無視される。- Parameters:
text
- 書き込む文字列- Returns:
- 本オブジェクト
- Throws:
HttpErrorResponse
- バッファの上限を越えてデータが書き込まれた場合
-
write
HTTPレスポンスボディにバイト配列を書き込む。 このメソッドで書き込まれたデータは、本オブジェクトが保持する バッファに保持され、クライアントソケットに対する書き込みは一切発生しない。 (このライタに対するflush()は単に無視される。)
実際にソケットに対するレスポンス処理が行われるのは、HttpResponseHandler
にレスポンスオブジェクトが戻された後である。 また、このオブジェクトにコンテンツパスが設定されている場合、 このライタに書き込まれた内容は単に無視される。- Parameters:
bytes
- 書き込むバイト配列- Returns:
- 本オブジェクト
- Throws:
HttpErrorResponse
- バッファの上限を越えてデータが書き込まれた場合
-
write
HTTPレスポンスボディにバイト配列を書き込む。 このメソッドで書き込まれたデータは、本オブジェクトが保持する バッファに保持され、クライアントソケットに対する書き込みは一切発生しない。 (このライタに対するflush()は単に無視される。)
実際にソケットに対するレスポンス処理が行われるのは、HttpResponseHandler
にレスポンスオブジェクトが戻された後である。 また、このオブジェクトにコンテンツパスが設定されている場合、 このライタに書き込まれた内容は単に無視される。- Parameters:
bytes
- 書き込むバイト列を格納したバッファ- Returns:
- 本オブジェクト
- Throws:
HttpErrorResponse
- バッファの上限を越えてデータが書き込まれた場合
-
toString
オブジェクトの内容と等価なHTTPレスポンスメッセージを返す。 -
isSuccess
public boolean isSuccess()処理が正常終了したかどうかを返す。 HTTPステータスコードが400未満であれば正常終了とみなす。
-
getCookieList()
を使用してください。