―Servlet/JSPリファレンス―

@ITハイブックス編
2003/10/24
Javaプログラミング
ワンポイントレクチャーについて

  HttpServletResponseオブジェクトの役割

   ワンポイントQuestion

 HTTPレスポンスヘッダを設定するメソッドは、次のうちどれですか? ただし、選択肢のメソッドの引数は便宜上省略してあります。(複数選択)

A setHeader()
B addHeader()
C setHeaders()
D addHeaders()
E setDateHeader()

   解説

 HttpServletResponseは、サービス処理本体(doGet()、doPost()など)で受け取るサーバからクライアントへ応答するときに必要なレスポンス情報が格納されているオブジェクトです。HTTP1.1の場合、HTTPレスポンスは以下の形式になります。

ステータス行  HTTPバージョン、ステータスコード、説明
ヘッダフィールド 一般ヘッダ、応答ヘッダ、エンティティヘッダ
ボディ サーバからブラウザに送信されるデータ

 HttpServletResponseに定義されているメソッドで、前述のHTTPレスポンスの各フィールドに値を設定し、クライアントへ応答を返すことができます。メソッドには以下のようなものがあります。

クライアントへの出力チャネル
PrintWriter getWriter()
ServletOutputStream getOutputStream()
※詳しくは、「サーブレットからの出力」を参照してください。

ヘッダ情報
void setHeader(String name, String value)
void addHeader(String name, String value)
void setIntHeader(String name, int value)
void setDateHeader(String name, long date)
void addIntHeader(String name, int value)
void addDateHeader(String name, long date)
boolean containsHeader(String name)

コンテンツタイプ

void setContentType(String type)
※詳しくは、「コンテンツタイプの設定」、または「文字コードの扱い」を参照してください。

エラー
void sendError(int sc) またはvoid sendError(int sc, String msg)
void sendErrorCode()

クッキー

void addCookie(Cookie c)

リダイレクト
void sendRedirect(String url)

URL再書き込み
String encodeURL(String url)

 本問題では、「ヘッダ情報」について説明します。

■ヘッダ情報

 以下のメソッドを使用して、HTTPレスポンスヘッダを設定することができます。ただし、クライアントへの応答がコミットされる前にヘッダが設定されることが必要です。

void setHeader(String name, String value)
引数で指定された名前と値を持つHTTPレスポンスヘッダを設定します。ヘッダがすでに設定されていた場合は、新しい値が以前の値を上書きします。containsHeader()でこの値の設定前にヘッダが存在したかどうか確認できます。

void addHeader(String name, String value)
引数で指定された名前と値を持つHTTPレスポンスヘッダを追加します。このメソッドにより、応答ヘッダに複数の値を設定することができるようになります。

boolean containsHeader(String name)
引数で指定されたHTTPレスポンスヘッダがすでに設定されているかどうかを確認することができます。指定されたヘッダがすでに設定されている場合はtrue、そうでない場合はfalseを返します。


POINT
数値型や日付型のヘッダ値を、次のメソッドで設定することができます。

void setIntHeader(String name, int value)
引数で指定された名前と整数値を持つHTTPレスポンスヘッダを設定します。ヘッダがすでに設定されていた場合は、新しい値が以前の値を上書きします。containsHeader()で、この値の設定前にヘッダが存在したかどうか確認することができます。

void setDateHeader(String name, long date)

引数で指定された名前と日付の値を持つHTTPレスポンスヘッダを設定します。日付は、エポックからのミリ秒数で指定されます。ヘッダがすでに設定されていた場合は、新しい値が以前の値を上書きします。containsHeader()で、この値の設定前にヘッダが存在したかどうか確認することができます。

void addIntHeader(String name, int value)

引数で指定された名前と整数値を持つHTTPレスポンスヘッダを追加します。このメソッドにより、応答ヘッダに複数の値を設定することができるようになります。

void addDateHeader(String name, long date)
引数で指定された名前と日付の値を持つHTTPレスポンスヘッダを追加します。日付は、エポックからのミリ秒数で指定されます。このメソッドにより、応答ヘッダに複数の値を設定することができるようになります。

KEYWORD
HTTPレスポンス
サーバからクライアントへの返信のことです

   ワンポイントQuestionの解答

正解 A、B、E

Java2ラーニングブック −Web Component Developer編−

本記事は@ITハイブックスシリーズ「J2EEラーニングブック −Web Component Developer編−」(技術評論社)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。

 

Javaプログラミング・ワンポイントレクチャー INDEX





Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間