JSP-クライアントリクエスト
この章では、JSPでのクライアントリクエストについて説明します。ブラウザがWebページを要求すると、Webサーバーに多くの情報が送信されます。この情報はHTTPリクエストのヘッダーの一部として送信されるため、この情報を直接読み取ることはできません。詳細については、HTTPプロトコルを確認してください。
次の表に、ブラウザからの重要なヘッダー情報を示します。この情報は、Webプログラミングで頻繁に使用されます-
S.No. | ヘッダーと説明 |
---|---|
1 | Accept このヘッダーは、 MIMEブラウザまたは他のクライアントが処理できるタイプ。の値image/png または image/jpeg 2つの最も一般的な可能性です。 |
2 | Accept-Charset このヘッダーは、ブラウザーが情報を表示するために使用できる文字セットを指定します。例えば、ISO-8859-1。 |
3 | Accept-Encoding このヘッダーは、ブラウザーが処理方法を知っているエンコーディングのタイプを指定します。の値gzip または compress 2つの最も一般的な可能性です。 |
4 | Accept-Language このヘッダーは、サーブレットが複数の言語で結果を生成できる場合に備えて、クライアントの優先言語を指定します。例えばen, en-us, ru、など。 |
5 | Authorization このヘッダーは、パスワードで保護されたWebページにアクセスするときにクライアントが自分自身を識別するために使用されます。 |
6 | Connection このヘッダーは、クライアントが永続的なHTTP接続を処理できるかどうかを示します。持続的接続により、クライアントまたは他のブラウザは1回のリクエストで複数のファイルを取得できます。の値Keep-Alive 持続的接続を使用する必要があることを意味します。 |
7 | Content-Length このヘッダーはにのみ適用されます POST POSTデータのサイズをバイト単位で要求および指定します。 |
8 | Cookie このヘッダーは、以前にブラウザに送信したサーバーにCookieを返します。 |
9 | Host このヘッダーは、元のURLで指定されたホストとポートを指定します。 |
10 | If-Modified-Since このヘッダーは、指定された日付以降にページが変更された場合にのみ、クライアントがページを必要としていることを示します。サーバーはコード304を送信します。これはNot Modified 新しい結果が利用できない場合はヘッダー。 |
11 | If-Unmodified-Since このヘッダーはの逆です If-Modified-Since; これは、ドキュメントが指定された日付より古い場合にのみ操作が成功するように指定します。 |
12 | Referer このヘッダーは、参照元のWebページのURLを示します。たとえば、Webページ1にいて、Webページ2へのリンクをクリックした場合、ブラウザがWebページ2を要求すると、Webページ1のURLがRefererヘッダーに含まれます。 |
13 | User-Agent このヘッダーは、リクエストを行っているブラウザまたは他のクライアントを識別し、さまざまなコンテンツをさまざまなタイプのブラウザに返すために使用できます。 |
HttpServletRequestオブジェクト
リクエストオブジェクトは、 javax.servlet.http.HttpServletRequestオブジェクト。クライアントがページを要求するたびに、JSPエンジンはその要求を表す新しいオブジェクトを作成します。
リクエストオブジェクトは、HTTPヘッダー情報を取得するためのメソッドを提供します。 form data, cookies, HTTP methods、など。
次の表に、JSPプログラムでHTTPヘッダーを読み取るために使用できる重要なメソッドを示します。これらのメソッドは、Webサーバーへのクライアント要求を表すHttpServletRequestオブジェクトで使用できます。
S.No. | 方法と説明 |
---|---|
1 | Cookie[] getCookies() クライアントがこのリクエストで送信したすべてのCookieオブジェクトを含む配列を返します。 |
2 | Enumeration getAttributeNames() このリクエストで使用可能な属性の名前を含む列挙型を返します。 |
3 | Enumeration getHeaderNames() このリクエストに含まれるすべてのヘッダー名の列挙を返します。 |
4 | Enumeration getParameterNames() このリクエストに含まれるパラメータの名前を含むStringオブジェクトの列挙を返します。 |
5 | HttpSession getSession() このリクエストに関連付けられている現在のセッションを返します。リクエストにセッションがない場合は、セッションを作成します。 |
6 | HttpSession getSession(boolean create) このリクエストに関連付けられている現在のHttpSessionを返します。現在のセッションがなく、createがtrueの場合は、新しいセッションを返します。 |
7 | Locale getLocale() Accept-Languageヘッダーに基づいて、クライアントがコンテンツを受け入れる優先ロケールを返します。 |
8 | Object getAttribute(String name) 名前付き属性の値をオブジェクトとして返します。指定された名前の属性が存在しない場合はnullを返します。 |
9 | ServletInputStream getInputStream() ServletInputStreamを使用して、リクエストの本文をバイナリデータとして取得します。 |
10 | String getAuthType() サーブレットを保護するために使用される認証スキームの名前(「BASIC」や「SSL」など)を返します。JSPが保護されていない場合はnullを返します。 |
11 | String getCharacterEncoding() このリクエストの本文で使用されている文字エンコードの名前を返します。 |
12 | String getContentType() リクエストの本文のMIMEタイプを返します。タイプが不明な場合は、nullを返します。 |
13 | String getContextPath() リクエストのコンテキストを示すリクエストURIの部分を返します。 |
14 | String getHeader(String name) 指定されたリクエストヘッダーの値を文字列として返します。 |
15 | String getMethod() このリクエストが行われたHTTPメソッドの名前(GET、POST、PUTなど)を返します。 |
16 | String getParameter(String name) リクエストパラメータの値を文字列として返します。パラメータが存在しない場合はnullを返します。 |
17 | String getPathInfo() クライアントがこのリクエストを行ったときに送信したURLに関連付けられた追加のパス情報を返します。 |
18 | String getProtocol() リクエストが使用するプロトコルの名前とバージョンを返します。 |
19 | String getQueryString() パスの後のリクエストURLに含まれているクエリ文字列を返します。 |
20 | String getRemoteAddr() 要求を送信したクライアントのインターネットプロトコル(IP)アドレスを返します。 |
21 | String getRemoteHost() リクエストを送信したクライアントの完全修飾名を返します。 |
22 | String getRemoteUser() ユーザーが認証されている場合は、この要求を行っているユーザーのログインを返します。ユーザーが認証されていない場合は、nullを返します。 |
23 | String getRequestURI() このリクエストのURLのプロトコル名から、HTTPリクエストの最初の行のクエリ文字列までの部分を返します。 |
24 | String getRequestedSessionId() クライアントによって指定されたセッションIDを返します。 |
25 | String getServletPath() このリクエストのURLのJSPを呼び出す部分を返します。 |
26 | String[] getParameterValues(String name) 指定されたリクエストパラメータが持つすべての値を含むStringオブジェクトの配列を返します。パラメータが存在しない場合はnullを返します。 |
27 | boolean isSecure() この要求がHTTPSなどの安全なチャネルを使用して行われたかどうかを示すブール値を返します。 |
28 | int getContentLength() リクエスト本文の長さをバイト単位で返し、入力ストリームで使用できるようにします。長さが不明な場合は-1を返します。 |
29 | int getIntHeader(String name) 指定されたリクエストヘッダーの値をintとして返します。 |
30 | int getServerPort() このリクエストを受信したポート番号を返します。 |
HTTPヘッダーリクエストの例
以下はを使用する例です getHeaderNames() の方法 HttpServletRequestHTTPヘッダー情報を読み取ります。このメソッドは、現在のHTTPリクエストに関連付けられたヘッダー情報を含む列挙型を返します。
列挙型を取得したら、標準的な方法で列挙型をループダウンできます。を使用しますhasMoreElements() いつ停止するかを決定する方法と nextElement() 各パラメータ名の名前を取得するメソッド。
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>HTTP Header Request Example</title>
</head>
<body>
<center>
<h2>HTTP Header Request Example</h2>
<table width = "100%" border = "1" align = "center">
<tr bgcolor = "#949494">
<th>Header Name</th>
<th>Header Value(s)</th>
</tr>
<%
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String paramName = (String)headerNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
%>
</table>
</center>
</body>
</html>
上記のコードを入れましょう main.jsp それにアクセスしてみてください。
HTTPヘッダーリクエストの例
ヘッダー名 | ヘッダー値 |
---|---|
受け入れる | * / * |
受け入れる言語 | en-us |
ユーザーエージェント | Mozilla / 4.0(互換性; MSIE 7.0; Windows NT 5.1; Trident / 4.0; InfoPath.2; MS-RTC LM 8) |
accept-encoding | gzip、deflate |
ホスト | localhost:8080 |
接続 | 生き続ける |
キャッシュ制御 | キャッシュなし |
同様の方法ですべてのメソッドに取り組むことができます。