JSP クライアントの HTTP リクエストとサーバーの応答と例

XML 構文の構成要素を使用してサーブレット エンジンの動作を制御する JSP アクション。 クライアントリクエスト、サーバーレスポンス、HTTPステータスコードなど、さまざまなJSPアクション要素についてさらに詳しく学びます。

JSP クライアント要求

  • Web ページが要求されると、HTTP ヘッダーで情報が Web サーバーに送信されます。
  • この情報は、HTTPServletRequest オブジェクトを使用して使用できます。
  • ブラウザから送信された情報は、HTTPリクエストのリクエストヘッダに格納されます。
  • リクエスト オブジェクトに情報を送信するためにさまざまなヘッダーを使用しています。

JSPのヘッダー

JSP のさまざまなヘッダーについては以下で説明します。

ヘッダ Description
同意 ブラウザまたは他のクライアントが処理できる MIME タイプを指定します。 画像/png または 画像/jpeg
受け入れ文字セット ブラウザで使用される文字セットを使用して情報を表示します ISO-8859-1
Accept-エンコーディング ブラウザによって処理されるエンコードのタイプを指定します Gzip または圧縮
受け入れる言語 クライアント指定の言語を指定します 英語、en_us
承認 パスワードで保護された Web ページにアクセスしようとするときにクライアントによって使用されるヘッダー
接続 クライアントが永続的な HTTP 接続を処理できるかどうかを示します (ブラウザーは複数のファイルを取得できます)。 生き続ける
コンテンツの長さ 投稿リクエストに適用されます。 投稿データのサイズをバイト単位で与えます
クッキー Cookieをサーバーに返します(以前にブラウザに送信されたもの)
ライブ、セミライブ、オンデマンドビデオ 元の URL のホストとポートを指定します
それ以降に変更された場合 変更または変更されている場合はページのみが必要であることを示します
それ以来変更されていない場合 変更または修正されていない場合にのみページが必要であることを示します
リファラー 参照元URLページのURLを示します
ユーザーエージェント リクエストを行うブラウザまたはクライアントを識別します

JSP の HTTP ヘッダー メソッド

Following JSP ページの HTTP ヘッダーを読み取るためにメソッドが使用されます。

  1. Cookie[] getCookies() – クライアントが送信した cookie オブジェクトを含む配列を返します。
  2. 列挙型 getAttributeNames() – リクエストの属性名の列挙が含まれます
  3. 列挙型 getHeaderNames() – header の名前の列挙が含まれます。
  4. 列挙型 getParameterNames() – リクエスト内のパラメータ名の取得の列挙が含まれます。
  5. HttpSessiongetSession() – リクエストに関連付けられた現在のセッションを返します。セッションがない場合は、新しいセッションを作成します。
  6. ロケール getLocale() – クライアントがコンテンツを受け入れる優先ロケールを返します。これは応答に割り当てられています。 デフォルトでは、値はサーバーのデフォルトのロケールになります。
  7. オブジェクト getAttribute(文字列名) – 名前付き属性の値をオブジェクトとして返します。
  8. ServletInputStreamgetInputStream() – リクエストの本文をバイナリデータとして取得します。
  9. 文字列 getAuthType() – サーブレットを保護するための認証スキームの名前を返します。
  10. 文字列 getCharacterEncoding() – リクエストの本文で使用される文字エンコーディングの名前を返します。
  11. 文字列 getContentType() – リクエストの本文の MIME タイプを返します。
  12. 文字列getContextPath() – リクエスト URI の一部を返します。URI のコンテキスト パスを示します。
  13. 文字列 getHeader(文字列名) – リクエストヘッダーを文字列として返します
  14. 文字列 getMethod() – GET、POSTなどのHTTPメソッドの名前を返します。
  15. 文字列 getParameter(文字列名) – リクエストのパラメータを文字列として返します。
  16. 文字列 getPathInfo() – URLに関連付けられたパス情報を返します
  17. 文字列getQueryString() – リクエスト URL に関連付けられたクエリ文字列を返します。
  18. 文字列 getServletPath() – JSPを呼び出すリクエストのURLの一部を返します。
  19. String[] getParameterValues(文字列名) – リクエストパラメータの値を含む文字列オブジェクトの配列を返します。

例:

以下の例では、リクエスト オブジェクトを使用してさまざまなメソッドを使用しています。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Client Request Guru JSP</title>
</head>
<body>
<h2>Client Request Guru JSP</h2>

<table border="1">
<tr>
<th>guru header</th><th>guru header Value(s)</th>
</tr>
<%
	HttpSession gurusession = request.getSession(); 
	out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>");
	Locale gurulocale = request.getLocale ();
	out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>");
	String path = request.getPathInfo(); 
	out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>"); 
	String lpath = request.get();
	out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>"); 
	String servername = request.getServerName(); 
	out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>");
	int portname = request.getServerPort(); 
	out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>");
	Enumeration hnames = request.getHeaderNames();
	while(hnames.hasMoreElements()) { 
		String paramName = (String)hnames.nextElement();
		out.print ("<tr><td>" + paramName + "</td>" );
		
		String paramValue = request.getHeader(paramName);
		out.println("<td> " + paramValue + "</td></tr>");
	}

%>

コードの説明:

コード行 17: リクエスト オブジェクトを使用して、その特定のセッションのセッション オブジェクトを取得し、そのセッションのオブジェクト値を取得します。

コード行 19: リクエスト オブジェクトを使用して、その JSP の特定のセッションのロケール i.een_US ロケールを取得します。

コード行 21: request オブジェクトを使用して、その JSP のパス情報を取得します。 この場合、URL へのパスが指定されていないため、null になります。

コード行 23: リクエストオブジェクトを使用して、コンテキストパス、つまりルートパスを取得します。

コード行 25: リクエストオブジェクトを使用してサーバー名を取得しています。

コード行 27: リクエストオブジェクトを使用してサーバーポートを取得しています。

コード行 29 ~ 35: リクエスト オブジェクトを使用すると、列挙として取得されるヘッダー名が取得されるため、ヘッダー名のすべてのヘッダー値が取得されます。

この例では、すべてのヘッダー値を クッキー、ホスト、接続、言語の受け入れ、エンコーディングの受け入れ。

上記のコードを実行すると、次の結果が得られますwing 出力:

JSP クライアント要求

出力:

セッション名、ロケール名、パス名、サーバー名、ポート名、ホスト、コンテキスト パス、およびそのすべてのヘッダー値などの一連の値を取得しています。 JSP.

JSPサーバーの応答

  • リクエストが処理され、Web サーバーからレスポンスが生成されるとき。 これは、ステータス行、応答ヘッダー、空白行、およびドキュメントで構成されます。
  • レスポンスオブジェクトであるHTTPServletResponseクラスのオブジェクトです。
  • ステータス行は HTML のバージョンです。

JSP の応答ヘッダー

JSP の応答ヘッダーについては以下で説明します。

ヘッダ Description
次を許可します。 サーバーがリクエストしているGET、POSTなどのリクエストメソッドを指定します。
キャッシュ制御 応答ドキュメントはキャッシュできます。 パブリックでもプライベートでも、キャッシュなしでもかまいません。 「キャッシュなし」は、ドキュメントをキャッシュしないことを指定します
接続 ブラウザがsavedHTTPConnectionsを使用するかどうかを指示します。 Close 値は、ブラウザが HTTPConnections で永続的な接続を使用しないことを表し、「キープアライブ」は永続的な接続を使用することを意味します。
コンテンツの配置 応答をディスクに保存するかどうかをユーザーに尋ねるには
コンテンツエンコーディング ページはその間にエンコードする必要があります transmission
コンテンツの長さ 応答内のバイト数
内容型 応答の MIME タイプを指定します
期限 コンテンツが古いとみなされ、キャッシュされない期限を指定します
最終更新日 ドキュメントが最後に変更された時期を示します
会場 ステータス コードが 300 であるすべての応答に含める必要があります。
Refresh 更新されたページを見つける方法を指定します。
再試行後の 503 応答とともに使用して、クライアントにどれだけ早くリクエストを繰り返すことができるかを伝えることができます。
セットクッキー ページに関連付けられた Cookie を指定します

JSP の HTTP 応答ヘッダー メソッド

Following 応答オブジェクトを使用する JSP のメソッドは次のとおりです。

  1. 文字列 encodeRedirectURL(文字列 URL) – redirectURL メソッドで URL をエンコードします。
  2. 文字列 encodeURL(文字列 URL) – セッション ID を含めて URL をエンコードします。
  3. ブール値 containsHeader(文字列名) – JSP にヘッダーが含まれているかどうか。
  4. ブール値 isCommited() – 応答がコミットされたかどうか。
  5. Void addCookie(Cookie cookie) – 応答に Cookie を追加します
  6. Void addDateHeader(文字列名, 文字列値) – 応答ヘッダーの日付名と値を追加します
  7. Void addHeader(文字列名, 文字列値) – 名前と値を含む応答ヘッダーを追加します
  8. Void addIntHeader(文字列名,int値) – 名前と整数値を含む応答ヘッダーを追加します
  9. ボイドフラッシュBuffer()– コンテンツを強制的に buffer クライアントへの出力に。
  10. ボイドリセット() – 内のデータをクリアします buffer.
  11. ボイドリセットBuffer – コンテンツをクリアします buffer ステータスコードをクリアせずに応答に含めます。
  12. Void sendError(intsc,Stringmsg) – ステータス コードを使用してクライアントにエラー応答を送信します。
  13. Void sendRedirect(文字列の場所) – 一時的なリダイレクト応答をクライアントに送信します。
  14. ボイドセットBufferサイズ(int サイズ) – セット buffer 体のサイズ
  15. Void setCharacterEncoding(String charset) – 文字エンコーディングを設定します
  16. Void setContentType(String 型) – 応答のコンテンツタイプを設定します
  17. Void setContentLength(intlen) – 応答のコンテンツの長さを設定します
  18. Void setLocale(Locale lcl) – 応答のロケールタイプを設定します
  19. ボイド setStatus(intsc) – 応答のステータスコードを設定します

例:

この例では、getLocale、flush などのさまざまなメソッドを取り上げています。buffer、getWriter、ContentType の取得、setIntHeader。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action Response</title>
</head>
<body>
<center>
<h2>Guru Response</h2>
<%
Locale lcl = response.getLocale();
out.println("Locale is : " + lcl + "\n");
response.flushBuffer();
PrintWriter output = response.getWriter();
output.println("This is from writer object");
String type = response.getContentType();
out.println("The content type : " + type + "\n");
	// Set refresh,autoload time as 5 seconds
	response.setIntHeader("Refresh", 5);
	//Get current time
	Date dt = new Date();
	out.println("Today's date is : " +dt.toString() + "\n");
%>
</center>
</body>
</html>

コードの説明:

コード行 13: 応答オブジェクトを使用して、この JSP セッションのロケール オブジェクトを取得します

コード行 15: 応答オブジェクトを使用してフラッシュするbuffer を強制するために使用されます buffer コンテンツをクライアントに取り込む

コード行 16: 応答オブジェクトを使用して、出力ストリームに出力を取得するライター オブジェクトを取得します。

コード行 18: 応答オブジェクトを使用して、コンテンツ タイプ、つまり応答オブジェクトの MIME タイプを取得します。

コード行 21: 応答オブジェクトを使用すると、5 番目のパラメーターとして 5 が設定されているため、XNUMX 秒ごとに自動ロードするために使用されます。

上記のコードを実行すると、次の結果が得られますwing 出力:

JSPサーバーの応答

出力:

  • ここでは、getWriter のライター オブジェクトからの出力をそのまま取得します。これによりオブジェクトが得られ、出力ストリームに出力できます。
  • ロケールは en_us、コンテンツ タイプは text/html として取得されます。
  • ISO 8859として文字セットを取得します
  • 現在の日付としての今日の日付。

JSP HTTP ステータス コード

  • リクエストが処理されると、レスポンスが生成されます。 応答ステータス行は、HTTP バージョン、ステータス コード、および関連するメッセージで構成されます。
  • メッセージはステータス コードと HTTP バージョンに直接関連付けられており、サーバーによって決定されます。
  • デフォルトでは、JSP のステータス コードとして 200 が設定されるため、明示的に設定する必要はありません。
  • response.setStatus() メソッドとして設定できます

コードは次のとおりですwing 5のカテゴリー:

  • 100-199 – ここでクライアントは何らかのアクションで応答する必要があることを示しています
  • 200-299 – リクエストが成功したことを示します
  • 300-399 – 移動されたファイルに使用され、通常は新しいアドレスを示す場所ヘッダーが含まれます
  • 400-499 – クライアントによるエラーを示します
  • 500-599 – サーバーによるエラーを示します

一般的なステータス コードの一部を以下に示します。

  • 200 – すべてが正常であることを示します
  • 301 – 永久に移動されました
  • 304 – 前回の変更以降変更されていません
  • 400不正な要求
  • 404 - 見つからない
  • 405 – メソッドが見つかりません
  • 500 - 内部サーバーエラー
  • 503 – サービスが利用できません
  • 505 – HTTP バージョンがサポートされていません

JSP の HTTP ステータス コード メソッド

JSP のステータス コード メソッドの一部を以下に示します。

  1. パブリック void setStatus(intstatusCode): その JSP ページに設定したいステータス コードを設定します。これにより、設定されたステータス コードのメッセージが表示されます。
  2. パブリック void sendRedirect(文字列 URL): 新しいドキュメントの URL を示す場所ヘッダーとともに 302 応答が生成されます。
  3. パブリック void sendError(intcode,Stringmsg): ステータス コードをショート メッセージとともに送信し、HTML ドキュメント内でフォーマットされます。

例:

この例では、明示的に JSP ページにエラーを送信しています。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Status Code</title>
</head>
<body>
<% response.sendError(404,"Guru Page Not Found"); %>
</body>
</html>

コードの説明:

コード行 10: 応答オブジェクトを使用して、XNUMX つのパラメーターを持つページにエラーを送信します。

  1. ステータス コード – 上記のいずれかになります。 この場合、404と記述しました。
  2. メッセージ – エラーを表示する特定のメッセージを指定できます。

上記のコードを実行すると、次の結果が得られますwing 出力:

JSP HTTP ステータス コード

出力:

ここでは、コードから送信されたエラー コード 404 が表示され、出力には「Guru Page not found」というメッセージも表示されます。

まとめ

  • この記事では、クライアントのリクエストとサーバーの応答について、リクエストがどのようにインターセプトされ、応答がどのように操作されるかについて学びました。
  • JSPアクション XML 構文の構造を使用してサーブレット エンジンの動作を制御します。
  • Web ページが要求されると、HTTP ヘッダーで情報が Web サーバーに送信されます。
  • リクエストが処理され、Web サーバーからレスポンスが生成されるとき。 これは、ステータス行、応答ヘッダー、空白行、およびドキュメントで構成されます。
  • リクエストが処理されると、レスポンスが生成されます。 応答ステータス行は、HTTP バージョン、ステータス コード、および関連するメッセージで構成されます。