JSP クライアント要求
XML 構文の構成要素を使用してサーブレット エンジンの動作を制御する JSP アクション。 クライアントリクエスト、サーバーレスポンス、HTTPステータスコードなど、さまざまなJSPアクション要素についてさらに詳しく学びます。
JSP クライアント要求
- Web ページが要求されると、HTTP ヘッダーで情報が Web サーバーに送信されます。
- この情報は、HTTPServletRequest オブジェクトを使用して使用できます。
- ブラウザから送信された情報は、HTTPリクエストのリクエストヘッダに格納されます。
- リクエスト オブジェクトに情報を送信するためにさまざまなヘッダーを使用しています。
JSPのヘッダー
JSP のさまざまなヘッダーについては以下で説明します。
ヘッダ | 詳細説明 | 例: |
---|---|---|
同意 | ブラウザまたは他のクライアントが処理できる MIME タイプを指定します。 | 画像/png または 画像/jpeg |
受け入れ文字セット | ブラウザで使用される文字セットを使用して情報を表示します | ISO-8859-1 |
Accept-エンコーディング | ブラウザによって処理されるエンコードのタイプを指定します | Gzip または圧縮 |
受け入れる言語 | クライアント指定の言語を指定します | 英語、en_us |
Authorization | パスワードで保護された Web ページにアクセスしようとするときにクライアントによって使用されるヘッダー | |
接続 | クライアントが永続的な HTTP 接続を処理できるかどうかを示します (ブラウザーは複数のファイルを取得できます)。 | 生き続ける |
コンテンツの長さ | 投稿リクエストに適用されます。 投稿データのサイズをバイト単位で与えます | |
クッキー | Cookieをサーバーに返します(以前にブラウザに送信されたもの) | |
主催者 | 元の URL のホストとポートを指定します | |
それ以降に変更された場合 | 変更または変更されている場合はページのみが必要であることを示します | |
それ以来変更されていない場合 | 変更または修正されていない場合にのみページが必要であることを示します | |
リファラー | 参照元URLページのURLを示します | |
ユーザーエージェント | リクエストを行うブラウザまたはクライアントを識別します |
JSP の HTTP ヘッダー メソッド
JSP ページで HTTP ヘッダーを読み取るには、次のメソッドが使用されます。
- Cookie[] getCookies() – クライアントが送信した cookie オブジェクトを含む配列を返します。
- 列挙型 getAttributeNames() – リクエストの属性名の列挙が含まれます
- 列挙型 getHeaderNames() – header の名前の列挙が含まれます。
- 列挙型 getParameterNames() – リクエスト内のパラメータ名の取得の列挙が含まれます。
- HttpSessiongetSession() – リクエストに関連付けられた現在のセッションを返します。セッションがない場合は、新しいセッションを作成します。
- ロケール getLocale() – クライアントがコンテンツを受け入れる優先ロケールを返します。これはレスポンスに割り当てられています。デフォルトでは、値はサーバーのデフォルト ロケールになります。
- オブジェクト getAttribute(文字列名) – 名前付き属性の値をオブジェクトとして返します。
- ServletInputStreamgetInputStream() – リクエストの本文をバイナリデータとして取得します。
- 文字列 getAuthType() – サーブレットを保護するための認証スキームの名前を返します。
- 文字列 getCharacterEncoding() – リクエストの本文で使用される文字エンコーディングの名前を返します。
- 文字列 getContentType() – リクエストの本文の MIME タイプを返します。
- 文字列getContextPath() – リクエスト URI の一部を返します。URI のコンテキスト パスを示します。
- 文字列 getHeader(文字列名) – リクエストヘッダーを文字列として返します
- 文字列 getMethod() – GET、POSTなどのHTTPメソッドの名前を返します。
- 文字列 getParameter(文字列名) – リクエストのパラメータを文字列として返します。
- 文字列 getPathInfo() – URLに関連付けられたパス情報を返します
- 文字列getQueryString() – リクエスト URL に関連付けられたクエリ文字列を返します。
- 文字列 getServletPath() – JSPを呼び出すリクエストのURLの部分を返します
- 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: リクエスト オブジェクトを使用すると、列挙として取得されるヘッダー名が取得されるため、ヘッダー名のすべてのヘッダー値が取得されます。
この例では、すべてのヘッダー値を クッキー、ホスト、接続、言語の受け入れ、エンコーディングの受け入れ。
上記のコードを実行すると、次の出力が得られます。
出力:
セッション名、ロケール名、パス名、サーバー名、ポート名、ホスト、コンテキスト パス、およびそのすべてのヘッダー値などの一連の値を取得しています。 JSP.
JSPサーバーの応答
- リクエストが処理され、Web サーバーからレスポンスが生成されるとき。 これは、ステータス行、応答ヘッダー、空白行、およびドキュメントで構成されます。
- レスポンスオブジェクトであるHTTPServletResponseクラスのオブジェクトです。
- ステータス行は HTML のバージョンです。
JSP の応答ヘッダー
JSP の応答ヘッダーについては以下で説明します。
ヘッダ | 詳細説明 |
---|---|
許可する | サーバーがリクエストしているGET、POSTなどのリクエストメソッドを指定します。 |
キャッシュ制御 | 応答ドキュメントはキャッシュできます。 パブリックでもプライベートでも、キャッシュなしでもかまいません。 「キャッシュなし」は、ドキュメントをキャッシュしないことを指定します |
接続 | ブラウザがsavedHTTPConnectionsを使用するかどうかを指示します。 Close 値は、ブラウザが HTTPConnections で永続的な接続を使用しないことを表し、「キープアライブ」は永続的な接続を使用することを意味します。 |
コンテンツの配置 | 応答をディスクに保存するかどうかをユーザーに尋ねるには |
コンテンツエンコーディング | ページは送信中にエンコードされる必要がある |
コンテンツの長さ | 応答内のバイト数 |
内容型 | 応答の MIME タイプを指定します |
期限 | コンテンツが古いとみなされ、キャッシュされない期限を指定します |
最終更新日 | ドキュメントが最後に変更された時期を示します |
位置の特定 | ステータス コードが 300 であるすべての応答に含める必要があります。 |
Refresh | 更新されたページを見つける方法を指定します。 |
再試行後の | 503 応答とともに使用して、クライアントにどれだけ早くリクエストを繰り返すことができるかを伝えることができます。 |
セットクッキー | ページに関連付けられた Cookie を指定します |
JSP の HTTP 応答ヘッダー メソッド
以下は、レスポンス オブジェクトを使用する JSP のメソッドです。
- 文字列 encodeRedirectURL(文字列 URL) – redirectURL メソッドで URL をエンコードします。
- 文字列 encodeURL(文字列 URL) – セッション ID を含めて URL をエンコードします。
- ブール値 containsHeader(文字列名) – JSP にヘッダーが含まれているかどうか。
- ブール値 isCommited() – 応答がコミットされたかどうか。
- Void addCookie(Cookie cookie) – 応答に Cookie を追加します
- Void addDateHeader(文字列名, 文字列値) – 応答ヘッダーの日付名と値を追加します
- Void addHeader(文字列名, 文字列値) – 名前と値を含む応答ヘッダーを追加します
- Void addIntHeader(文字列名,int値) – 名前と整数値を含む応答ヘッダーを追加します
- ボイドフラッシュBuffer()– バッファ内のコンテンツをクライアントに強制的に出力します。
- ボイドリセット() – バッファ内のデータをクリアします。
- ボイドリセットBuffer – ステータス コードをクリアせずに、応答内のコンテンツ バッファーをクリアします。
- Void sendError(intsc,Stringmsg) – ステータス コードを使用してクライアントにエラー応答を送信します。
- Void sendRedirect(文字列の場所) – 一時的なリダイレクト応答をクライアントに送信します。
- ボイドセットBufferサイズ(int サイズ) – 本体のバッファサイズを設定します
- Void setCharacterEncoding(String charset) – 文字エンコーディングを設定します
- Void setContentType(String 型) – 応答のコンテンツタイプを設定します
- Void setContentLength(intlen) – 応答のコンテンツの長さを設定します
- Void setLocale(Locale lcl) – 応答のロケールタイプを設定します
- ボイド setStatus(intsc) – 応答のステータスコードを設定します
例:
この例では、getLocale、flushbuffer、getWriter、get 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: レスポンスオブジェクトを使用して、flushbufferを使用してバッファの内容をクライアントに強制的に送信します。
コード行 16: 応答オブジェクトを使用して、出力ストリームに出力を取得するライター オブジェクトを取得します。
コード行 18: 応答オブジェクトを使用して、コンテンツ タイプ、つまり応答オブジェクトの MIME タイプを取得します。
コード行 21: 応答オブジェクトを使用すると、5 番目のパラメーターとして 5 が設定されているため、XNUMX 秒ごとに自動ロードするために使用されます。
上記のコードを実行すると、次の出力が得られます。
出力:
- ここでは、getWriter のライター オブジェクトからの出力をそのまま取得します。これによりオブジェクトが得られ、出力ストリームに出力できます。
- ロケールは en_us、コンテンツ タイプは text/html として取得されます。
- ISO 8859として文字セットを取得します
- 現在の日付としての今日の日付。
JSP HTTP ステータス コード
- リクエストが処理されると、レスポンスが生成されます。 応答ステータス行は、HTTP バージョン、ステータス コード、および関連するメッセージで構成されます。
- メッセージはステータス コードと HTTP バージョンに直接関連付けられており、サーバーによって決定されます。
- デフォルトでは、JSP のステータス コードとして 200 が設定されるため、明示的に設定する必要はありません。
- response.setStatus() メソッドとして設定できます
コードは次の 5 つのカテゴリに分類されます。
- 100-199 – ここでクライアントは何らかのアクションで応答する必要があることを示しています
- 200-299 – リクエストが成功したことを示します
- 300-399 – 移動されたファイルに使用され、通常は新しいアドレスを示す場所ヘッダーが含まれます
- 400-499 – クライアントによるエラーを示します
- 500-599 – サーバーによるエラーを示します
一般的なステータス コードの一部を以下に示します。
- 200 – すべてが正常であることを示します
- 301 – 永久に移動されました
- 304 – 前回の変更以降変更されていません
- 400不正な要求
- 404 - 見つからない
- 405 – メソッドが見つかりません
- 500 - 内部サーバーエラー
- 503 – サービスが利用できません
- 505 – HTTP バージョンがサポートされていません
JSP の HTTP ステータス コード メソッド
JSP のステータス コード メソッドの一部を以下に示します。
- パブリック void setStatus(intstatusCode): JSPページに設定するステータスコードを設定します。これにより、設定されたステータスコードのメッセージが表示されます。
- パブリック void sendRedirect(文字列 URL): 新しいドキュメントのURLを示すロケーションヘッダーとともに302レスポンスを生成します。
- パブリック 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 つのパラメーターを持つページにエラーを送信します。
- ステータス コード – 上記のいずれかになります。 この場合、404と記述しました。
- メッセージ – エラーを表示する特定のメッセージを指定できます。
上記のコードを実行すると、次の出力が得られます。
出力:
ここでは、コードから送信されたエラー コード 404 が表示され、出力には「Guru Page not found」というメッセージも表示されます。
製品概要
- この記事では、クライアントのリクエストとサーバーの応答について、リクエストがどのようにインターセプトされ、応答がどのように操作されるかについて学びました。
- JSPアクション XML 構文の構造を使用してサーブレット エンジンの動作を制御します。
- Web ページが要求されると、HTTP ヘッダーで情報が Web サーバーに送信されます。
- リクエストが処理され、Web サーバーからレスポンスが生成されるとき。 これは、ステータス行、応答ヘッダー、空白行、およびドキュメントで構成されます。
- リクエストが処理されると、レスポンスが生成されます。 応答ステータス行は、HTTP バージョン、ステータス コード、および関連するメッセージで構成されます。