Response オブジェクトは主に、JSP コンテナによって処理された結果をクライアントに送り返します。 HTTP ステータスを設定し、Cookie や HTTP ファイル ヘッダー情報などの応答変数を通じてクライアントにデータを送信できます。
典型的な応答は次のようになります。
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ...HeaderN: ... (空行)<!doctype ...><html><head>...</head><body> ... </body></html>
ステータス行には、HTTP/1.1 などの HTTP バージョン情報、200 などのステータス コード、OK などのステータス コードに対応する非常に短いメッセージが含まれます。
次の表は、ネットワーク プログラミングでよく目にする、HTTP 1.1 応答ヘッダーの最も有用な部分をまとめたものです。
応答ヘッダー | 説明する |
---|---|
許可する | サーバーがサポートするリクエストメソッド (GET、POST など) を指定します。 |
キャッシュ制御 | 応答ドキュメントを安全にキャッシュできる状況を指定します。通常、値はpublic 、 private 、 no-cacheなどです。パブリックはドキュメントがキャッシュ可能であることを意味し、プライベートはドキュメントが 1 人のユーザーにのみ提供され、プライベート キャッシュのみを使用できることを意味します。キャッシュなしとは、ドキュメントがキャッシュされていないことを意味します。 |
繋がり | 永続的な HTTP 接続を使用するかどうかをブラウザーに指示します。 close値はブラウザに永続的な HTTP 接続を使用しないように指示しますが、キープアライブは永続的な接続を使用することを意味します。 |
コンテンツの配置 | ブラウザーがユーザーに応答を指定された名前でディスクに保存するように要求します。 |
コンテンツエンコーディング | 送信時のページのエンコード規則を指定する |
コンテンツ言語 | en、en-us、ru など、ドキュメントを表現するために使用される言語。 |
コンテンツの長さ | 応答内のバイト数を示します。ブラウザがキープアライブ HTTP 接続を使用する場合にのみ役立ちます |
コンテンツタイプ | ドキュメントで使用される MIME タイプを示します |
有効期限が切れます | 有効期限が切れてキャッシュから削除されるタイミングを指定する |
最終更新日 | ドキュメントが最後に変更された時期を示します。クライアントはドキュメントをキャッシュし、後続のリクエストでIf-Modified-Sinceリクエスト ヘッダーを提供できます。 |
位置 | ステータス コードを含むすべての応答アドレスを含めて 300 秒以内に、ブラウザは自動的に再接続し、新しいドキュメントを取得します。 |
リフレッシュ | ブラウザがページの更新を要求する頻度を示します。 |
再試行後 | 503 (サービス利用不可) とともに使用され、リクエストが応答されるまでにどれくらいの時間がかかるかをユーザーに通知します。 |
セットクッキー | 現在のページに対応する Cookie を示します |
応答オブジェクトは、javax.servlet.http.HttpServletResponse クラスのインスタンスです。サーバーはリクエスト オブジェクトを作成するのと同じように、クライアントの応答も作成します。
応答オブジェクトは、HTTP ヘッダーの作成を処理するためのインターフェイスを定義します。このオブジェクトを使用すると、開発者は新しい Cookie やタイムスタンプ、HTTP ステータス コードなどを追加できます。
次の表に、HTTP 応答ヘッダーの設定に使用されるメソッドを示します。これらのメソッドは、HttpServletResponse クラスによって提供されます。
SN | 方法と説明 |
---|---|
1 | String encodeRedirectURL(String url) は、 sendRedirect() メソッドで使用される URL をエンコードします。 |
2 | String encodeURL(String url) はURL をエンコードし、セッション ID を含む URL を返します。 |
3 | boolean containsHeader(String name) は、指定された応答ヘッダーが存在するかどうかを返します。 |
4 | boolean isCommitted() は、応答がクライアントに送信されたかどうかを返します。 |
5 | void addCookie(Cookie cookie)指定された Cookie を応答に追加します |
6 | void addDateHeader(String name, long date) は、指定された名前の応答ヘッダーと日付値を追加します。 |
7 | void addHeader(String name, String value) は、応答ヘッダーと指定された名前の値を追加します。 |
8 | void addIntHeader(String name, int value) は、指定された名前の応答ヘッダーと int 値を追加します。 |
9 | void flashBuffer() は、キャッシュの内容をクライアントに書き込みます。 |
10 | void replace() は、ステータス コードやさまざまな応答ヘッダーを含む、キャッシュ内のすべてのデータをクリアします。 |
11 | void replaceBuffer() は、応答ヘッダーとステータス コードを除く基本的なキャッシュ データをクリアします。 |
12 | void sendError(int sc) は、指定されたステータス コードを使用してクライアントにエラー応答を送信し、キャッシュをクリアします。 |
13 | void sendError(int sc, String msg) は、指定されたステータス コードとメッセージを使用してクライアントにエラー応答を送信します。 |
14 | void sendRedirect(String location) は、指定された URL を使用してクライアントに一時的な間接応答を送信します。 |
15 | void setBufferSize(int size) は、応答本文のバッファ サイズを設定します。 |
16 | void setCharacterEncoding(String charset) は、 UTF-8 などの応答エンコーディング セット (MIME 文字セット) を指定します。 |
17 | void setContentLength(int len) は、 HTTP サーブレットの応答コンテンツの長さを指定します。このメソッドは、HTTP Content-Length 情報ヘッダーを設定するために使用されます。 |
18 | void setContentType(String type) は、応答がまだ送信されていない場合、応答のコンテンツ タイプを設定します。 |
19 | void setDateHeader(String name, long date) は、指定された名前と値を使用して応答ヘッダーの名前と内容を設定します。 |
20 | void setHeader(String name, String value) は、指定された名前と値を使用して応答ヘッダーの名前と内容を設定します。 |
21 | void setIntHeader(String name, int value) は、指定された名前と値を使用して応答ヘッダーの名前と内容を設定します。 |
22 | void setLocale(Locale loc)応答がまだ送信されていない場合、応答のロケールを設定します。 |
23 | void setStatus(int sc) は応答のステータス コードを設定します |
次の例では、setIntHeader() メソッドと setRefreshHeader() メソッドを使用してデジタル クロックをシミュレートします。
<%@ page import="java.io.*,java.util.*" %><html><head><title>自動更新ヘッダーの例</title></head><body><center><h2 >自動更新ヘッダーの例</h2><% //5 秒ごとに自動更新を設定します response.setIntHeader("Refresh", 5) //現在の時刻を取得します Calendar = new GregorianCalendar(); am_pm; int 時間 = カレンダー.get(Calendar.HOUR); int 分 = カレンダー.get(Calendar.MINUTE); if(calendar.get(Calendar.AM_PM); 0) am_pm = "AM"; それ以外の場合、am_pm = "PM"; 文字列 CT = 時間 +":"+ 分 +":"+ 秒 +" "+ am_pm; out.println("現在の時刻: " + CT + "n");
上記のコードを main.jsp として保存し、ブラウザからアクセスします。現在のシステム時刻が 5 秒ごとに表示されます。
実行結果は次のとおりです。
自動更新ヘッダーの例現在の時刻: 9:44:50 PM
上記のコードを自分で変更して、より深く理解するために他の方法を試すこともできます。