English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ブラウザがウェブページをリクエストする際、それらの情報はHTTPヘッダーとして送信されるため、直接読み取れない情報のシリーズをネットワークサーバーに送信します。詳細についてはHTTPプロトコルを参照してください。
以下のテーブルには、ブラウザ端の重要な情報ヘッダが含まれており、今後のネットワークプログラミングでよく見られます:
情報 | 説明 |
---|---|
Accept | ブラウザまたは他のクライアントが処理できるMIMEタイプを指定します。その値は通常、 image/png または image/jpeg |
Accept-Charset | 指定されたブラウザが使用する文字セットを示します。例えば ISO-8859-1 |
Accept-Encoding | 指定されたエンコーディング形式を示します。その値は通常、 gzip またはcompress |
Accept-Language | クライアントがお好みの言語を指定し、servletはその言語で構成された結果セットを優先して返します(servletがその言語をサポートする場合)。例えば en、en-us、ruなど |
Authorization | パスワード保護されたページにアクセスする際に、異なるユーザーを識別します |
Connection | クライアントがHTTP持続接続を処理できるかどうかを示します。持続接続は、クライアントまたはブラウザが1つのリクエストで複数のファイルを取得できるようにします。Keep-Alive 持続接続を有効にする |
Content-Length | POSTリクエストにのみ適用され、POSTデータのバイト数を示します |
Cookie | ブラウザに送信されたクッキーをサーバーに戻します |
Host | オリジナルURLのホスト名とポート番号を示します |
If-Modified-Since | 指定された日付にページが変更された場合にのみ、クライアントが必要なページをサーバーが送信します。304コードをクライアントに送信し、リソースが更新されていないことを示します |
If-Unmodified-Since | If-Modified-Sinceの逆で、指定された日付以降にドキュメントがまだ変更されていない場合にのみ、操作が成功します |
Referer | 参照元ページのURLを示します。例えば、あなたがページ1をクリックして、ページにリンクしました2それでは、ページ1のURLがブラウザのリクエストページに含まれます2の情報ヘッダに含まれます |
User-Agent | 異なるブラウザやクライアントが送信するリクエストを区別し、異なるタイプのブラウザに異なるコンテンツを返します。 |
requestオブジェクトはjavax.servlet.http.HttpServletRequestクラスの例です。クライアントがページをリクエストするたびに、JSPエンジンはそのリクエストを表す新しいオブジェクトを生成します。
requestオブジェクトは、フォームデータ、クッキー、HTTPメソッドなど、HTTPヘッダ情報を取得するための多くのメソッドを提供します。
JSPプログラミングでよく使用されるHTTPヘッダ情報を取得する方法について紹介します。詳細は以下のテーブルを参照してください:
番号 | メソッド& 説明 |
---|---|
1 | Cookie[] getCookies() クライアントのすべてのCookieの配列を返します |
2 | Enumeration getAttributeNames() requestオブジェクトのすべての属性名のコレクションを返します |
3 | Enumeration getHeaderNames() すべてのHTTPヘッダーの名前のコレクションを返します |
4 | Enumeration getParameterNames() リクエスト中のすべてのパラメータのコレクションを返します |
5 | HttpSession getSession() requestに対応するsessionオブジェクトを返します。存在しない場合には新しいsessionオブジェクトを作成します |
6 | HttpSession getSession(boolean create) requestに対応するsessionオブジェクトを返します。存在しない場合でcreateパラメータがtrueの場合は新しいsessionオブジェクトを返します |
7 | Locale getLocale() 現在のページのLocaleオブジェクトを返します。responseで設定できます |
8 | Object getAttribute(String name) 指定されたnameに対応する属性値を返します。存在しない場合はnullを返します |
9 | ServletInputStream getInputStream() リクエストの入力ストリームを返します |
10 | String getAuthType() 認証スキーマの名前を返します。servletを保護するために使用され、例えば"BASIC"または"SSL"、JSPが保護設定を設定していない場合はnull |
11 | String getCharacterEncoding() requestの文字エンコーディングセットの名前を返します |
12 | String getContentType() requestの主体のMIMEタイプを返します。未知の場合はnullを返します |
13 | String getContextPath() request URIに指定された上下文パスを返します |
14 | String getHeader(String name) 指定されたnameに対応するヘッダー情報を返します |
15 | String getMethod() このrequestのHTTPメソッドを返します。例えばGET、POST、またはPUTなど |
16 | String getParameter(String name) このrequestで指定されたnameに対応するパラメータを返します。存在しない場合はnullを返します |
17 | String getPathInfo() このrequest URLに関連する追加のパスを返します |
18 | String getProtocol() このrequestを使用しているプロトコル名とバージョンを返します |
19 | String getQueryString() このrequest URLに含まれるクエリストリングを返します |
20 | String getRemoteAddr() クライアントのIPアドレスを返します |
21 | String getRemoteHost() クライアントの完全な名前を返します |
22 | String getRemoteUser() ログイン認証されたユーザーを返します。ユーザーが認証されていない場合はnullを返します |
23 | String getRequestURI() requestのURIを返します |
24 | String getRequestedSessionId() requestで指定されたsession IDを返します |
25 | String getServletPath() リクエストされたservletパスを返します |
26 | String[] getParameterValues(String name) 指定された名前のパラメータのすべての値を返します。存在しない場合はnullを返します |
27 | boolean isSecure() requestが暗号化されたチャネルを使用しているかどうかを返します。例えばHTTPS |
28 | int getContentLength() requestの主体に含まれるバイト数を返します。未知の場合は、-1 |
29 | int getIntHeader(String name) 指定された名前のrequestヘッダの値を返します |
30 | int getServerPort() サーバーのポート番号を返します |
この例では、HttpServletRequestクラスのgetHeaderNames()メソッドを使用してHTTPヘッダ情報を読み取ります。このメソッドは、現在のHTTPリクエストのヘッダ情報を列挙形式で返します。
Enumerationオブジェクトを取得した後、標準的な方法でEnumerationオブジェクトを巡回し、hasMoreElements()メソッドを使用して停止するタイミングを決定し、nextElement()メソッドを使用して各パラメータの名前を取得します。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.io.*,java.util.*" %> !DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基礎教程網(oldtoolbag.com)</title> </head> <body> <h2>HTTP ヘッダー要求例</h2> <table width="100%" border="1" align="center"> <tr bgcolor="#949494"> <th>ヘッダー名</th><th>ヘッダー値(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> </body> </html>
main.jspにアクセスすると、以下のような結果が得られます:
上記のコードでHttpServletRequestクラスの他のメソッドを試してみてください。