Jsp-server-response
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)、ステータスコード(例では200)、およびステータスコード(例ではOK)*に対応する非常に短いメッセージで構成されています。
以下は、Webサーバーからブラウザーに戻る最も有用なHTTP 1.1応答ヘッダーの要約です。 これらのヘッダーは、Webプログラミングで頻繁に使用されます-
S.No. | Header & Description |
---|---|
1 |
Allow このヘッダーは、サーバーがサポートする要求メソッド( GET、POST など)を指定します。 |
2 |
Cache-Control このヘッダーは、応答ドキュメントを安全にキャッシュできる状況を指定します。 値は public、private 、または no-cache などです。 Publicはドキュメントがキャッシュ可能であることを意味し、Privateはドキュメントが単一ユーザー向けであり、プライベート(非共有)キャッシュにのみ保存可能であり、no-cacheはドキュメントをキャッシュしないことを意味します。 |
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オブジェクト*のインスタンスです。 サーバーが要求オブジェクトを作成するのと同じように、クライアントへの応答を表すオブジェクトも作成します。
応答オブジェクトは、新しいHTTPヘッダーの作成を処理するインターフェイスも定義します。 このオブジェクトを介して、JSPプログラマーは新しいCookieまたは日付スタンプ、HTTPステータスコードなどを追加できます。
次のメソッドを使用して、サーブレットプログラムでHTTP応答ヘッダーを設定できます。 これらのメソッドは、_HttpServletResponse_オブジェクトで使用できます。 このオブジェクトはサーバーの応答を表します。
S.No. | Method & Description |
---|---|
1 |
String encodeRedirectURL(String 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) 指定された名前と整数値を持つ応答ヘッダーを追加します。 |
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サーブレットの応答のコンテンツ本文の長さを設定します。このメソッドは、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) この応答のステータスコードを設定します。 |
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
同様の方法で他の方法を試してみることができます。