English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP クライアントリクエスト

ブラウザがウェブページをリクエストする際、それらの情報は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 異なるブラウザやクライアントが送信するリクエストを区別し、異なるタイプのブラウザに異なるコンテンツを返します。

HttpServletRequestクラス

requestオブジェクトはjavax.servlet.http.HttpServletRequestクラスの例です。クライアントがページをリクエストするたびに、JSPエンジンはそのリクエストを表す新しいオブジェクトを生成します。

requestオブジェクトは、フォームデータ、クッキー、HTTPメソッドなど、HTTPヘッダ情報を取得するための多くのメソッドを提供します。

JSPプログラミングでよく使用されるHTTPヘッダ情報を取得する方法について紹介します。詳細は以下のテーブルを参照してください:

番号メソッド& 説明
1Cookie[] getCookies() クライアントのすべてのCookieの配列を返します
2Enumeration getAttributeNames() requestオブジェクトのすべての属性名のコレクションを返します
3Enumeration getHeaderNames() すべてのHTTPヘッダーの名前のコレクションを返します
4Enumeration getParameterNames() リクエスト中のすべてのパラメータのコレクションを返します
5HttpSession getSession() requestに対応するsessionオブジェクトを返します。存在しない場合には新しいsessionオブジェクトを作成します
6HttpSession getSession(boolean create) requestに対応するsessionオブジェクトを返します。存在しない場合でcreateパラメータがtrueの場合は新しいsessionオブジェクトを返します
7Locale getLocale() 現在のページのLocaleオブジェクトを返します。responseで設定できます
8Object getAttribute(String name) 指定されたnameに対応する属性値を返します。存在しない場合はnullを返します
9ServletInputStream getInputStream() リクエストの入力ストリームを返します
10String getAuthType() 認証スキーマの名前を返します。servletを保護するために使用され、例えば"BASIC"または"SSL"、JSPが保護設定を設定していない場合はnull
11String getCharacterEncoding() requestの文字エンコーディングセットの名前を返します
12String getContentType() requestの主体のMIMEタイプを返します。未知の場合はnullを返します
13String getContextPath() request URIに指定された上下文パスを返します
14String getHeader(String name) 指定されたnameに対応するヘッダー情報を返します
15String getMethod() このrequestのHTTPメソッドを返します。例えばGET、POST、またはPUTなど
16String getParameter(String name) このrequestで指定されたnameに対応するパラメータを返します。存在しない場合はnullを返します
17String getPathInfo() このrequest URLに関連する追加のパスを返します
18String getProtocol() このrequestを使用しているプロトコル名とバージョンを返します
19String getQueryString() このrequest URLに含まれるクエリストリングを返します
20String getRemoteAddr() クライアントのIPアドレスを返します
21String getRemoteHost() クライアントの完全な名前を返します
22String getRemoteUser() ログイン認証されたユーザーを返します。ユーザーが認証されていない場合はnullを返します
23String getRequestURI() requestのURIを返します
24String getRequestedSessionId() requestで指定されたsession IDを返します
25String getServletPath() リクエストされたservletパスを返します
26String[] getParameterValues(String name) 指定された名前のパラメータのすべての値を返します。存在しない場合はnullを返します
27boolean isSecure() requestが暗号化されたチャネルを使用しているかどうかを返します。例えばHTTPS
28int getContentLength() requestの主体に含まれるバイト数を返します。未知の場合は、-1
29int getIntHeader(String name) 指定された名前のrequestヘッダの値を返します
30int getServerPort() サーバーのポート番号を返します

HTTPヘッダ情報の例

この例では、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クラスの他のメソッドを試してみてください。