JSP-サーバーの応答
この章では、JSPでのサーバー応答について説明します。WebサーバーがHTTP要求に応答する場合、応答は通常、ステータス行、いくつかの応答ヘッダー、空白行、およびドキュメントで構成されます。典型的な応答は次のようになります-
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
ステータス行はHTTPバージョンで構成されます (HTTP/1.1 in the example)、ステータスコード (200 in the example)、およびステータスコードに対応する非常に短いメッセージ (OK in the example)。
以下は、Webサーバーからブラウザーに戻る最も有用なHTTP1.1応答ヘッダーの要約です。これらのヘッダーは、Webプログラミングで頻繁に使用されます-
S.No. | ヘッダーと説明 |
---|---|
1 | Allow このヘッダーはリクエストメソッドを指定します(GET, POST、など)サーバーがサポートします。 |
2 | Cache-Control このヘッダーは、応答ドキュメントを安全にキャッシュできる状況を指定します。それは値を持つことができますpublic, private または no-cache パブリックとは、ドキュメントがキャッシュ可能であることを意味し、プライベートとは、ドキュメントが1人のユーザー向けであり、プライベート(非共有)キャッシュにのみ保存できることを意味し、キャッシュなしとは、ドキュメントがキャッシュされないことを意味します。 |
3 | Connection このヘッダーは、永続的なHTTP接続を使用するかどうかをブラウザーに指示します。の値close 永続的なHTTP接続を使用しないようにブラウザに指示し、 keep-alive 持続的接続を使用することを意味します。 |
4 | Content-Disposition このヘッダーを使用すると、ブラウザがユーザーに、指定された名前のファイルにディスクへの応答を保存するように要求できます。 |
5 | Content-Encoding このヘッダーは、送信中にページがエンコードされた方法を指定します。 |
6 | Content-Language このヘッダーは、ドキュメントが書かれている言語を示します。例えば、en, en-us, ru, 等 |
7 | Content-Length このヘッダーは、応答のバイト数を示します。この情報は、ブラウザーが永続的な(維持)HTTP接続を使用している場合にのみ必要です。 |
8 | Content-Type このヘッダーは MIME ((Multipurpose Internet Mail Extension)応答ドキュメントのタイプ。 |
9 | Expires このヘッダーは、コンテンツが古くなっていると見なされ、キャッシュされなくなる時刻を指定します。 |
10 | Last-Modified このヘッダーは、ドキュメントが最後に変更された日時を示します。その後、クライアントはドキュメントをキャッシュし、日付を指定できます。If-Modified-Since 後のリクエストのリクエストヘッダー。 |
11 | Location このヘッダーは、300年代のステータスコードを持つすべての応答に含める必要があります。これにより、ブラウザにドキュメントアドレスが通知されます。ブラウザは自動的にこの場所に再接続し、新しいドキュメントを取得します。 |
12 | Refresh このヘッダーは、ブラウザーが更新されたページを要求するまでの時間を指定します。ページが更新されるまでの時間を秒数で指定できます。 |
13 | Retry-After このヘッダーは、 503 (Service Unavailable) クライアントに要求を繰り返すことができる時間を伝えるための応答。 |
14 | Set-Cookie このヘッダーは、ページに関連付けられたCookieを指定します。 |
HttpServletResponseオブジェクト
応答オブジェクトは、 javax.servlet.http.HttpServletResponse object。サーバーが要求オブジェクトを作成するのと同じように、サーバーはクライアントへの応答を表すオブジェクトも作成します。
応答オブジェクトは、新しいHTTPヘッダーの作成を処理するインターフェースも定義します。このオブジェクトを介して、JSPプログラマーは新しいCookieまたは日付スタンプ、HTTPステータスコードなどを追加できます。
次のメソッドを使用して、サーブレットプログラムにHTTP応答ヘッダーを設定できます。これらのメソッドは、HttpServletResponseオブジェクトで使用できます。このオブジェクトはサーバーの応答を表します。
S.No. | 方法と説明 |
---|---|
1 | String encodeRedirectURL(String url) で使用するために指定されたURLをエンコードします sendRedirect メソッド、またはエンコードが不要な場合は、URLを変更せずに返します。 |
2 | String encodeURL(String url) セッションIDを含めて、指定されたURLをエンコードします。エンコードが不要な場合は、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) 指定された名前と整数値を持つ応答ヘッダーを追加します。 |
9 | void flushBuffer() バッファ内のすべてのコンテンツをクライアントに強制的に書き込みます。 |
10 | void reset() バッファに存在するすべてのデータ、およびステータスコードとヘッダーをクリアします。 |
11 | void resetBuffer() ヘッダーやステータスコードをクリアせずに、応答の基になるバッファーの内容をクリアします。 |
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) クライアントに送信される応答の文字エンコード(MIME文字セット)を、たとえばUTF-8に設定します。 |
17 | void setContentLength(int len) HTTPサーブレットの応答でコンテンツ本文の長さを設定します。このメソッドは、HTTPContent-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) この応答のステータスコードを設定します。 |
HTTPヘッダー応答の例
次の例では、 setIntHeader() 設定する方法 Refresh デジタル時計をシミュレートするヘッダー-
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>Auto Refresh Header Example</title>
</head>
<body>
<center>
<h2>Auto Refresh Header Example</h2>
<%
// Set refresh, autoload time as 5 seconds
response.setIntHeader("Refresh", 5);
// Get current time
Calendar calendar = new GregorianCalendar();
String am_pm;
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
if(calendar.get(Calendar.AM_PM) == 0)
am_pm = "AM";
else
am_pm = "PM";
String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
out.println("Current Time is: " + CT + "\n");
%>
</center>
</body>
</html>
次に、上記のコードを main.jspそれにアクセスしてみてください。これにより、次のように5秒ごとに現在のシステム時刻が表示されます。JSPを実行します。次の出力が表示されます。
Auto Refresh Header Example
Current Time is: 9:44:50 PM
同様の方法で他の方法を試すことができます。