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


ブラウザが Web ページをリクエストすると、一連の情報がネットワーク サーバーに送信されますが、情報は HTTP ヘッダーの一部として送信されるため、直接読み取ることはできません。詳細については、HTTP プロトコルを確認してください。

次の表は、ブラウザ側の情報ヘッダーの重要な内容をいくつかリストしたものです。この情報は、将来のネットワーク プログラミングで頻繁に使用されます。

情報説明
ブラウザまたは他のクライアントが処理できる MIME タイプを指定します。その値は通常、image/png または image/jpeg
Accept-Charset ブラウザで使用する文字セットを指定します。たとえば、ISO-8859-1
Accept-Encoding エンコードタイプを指定します。その値は通常、gzip または compress
Accept-Language クライアントの優先言語を指定します。サーブレットがこの言語をサポートしている場合、サーブレットは現在の言語で結果セットを返すことを優先します。 en、en-us、ru など。
承認 パスワードで保護された Web ページにアクセスするときにさまざまなユーザーを識別します
接続 クライアントが HTTP 永続接続を処理できるかどうかを示します。永続的な接続により、クライアントまたはブラウザは 1 回のリクエストで複数のファイルをフェッチできます。Keep-Alive は、永続的な接続を有効にすることを意味します
コンテンツの長さ POST リクエストにのみ適用され、POST データのバイト数を示します
クッキー 以前にブラウザに送信された Cookie をサーバーに返します
ホスト 元の URL のホスト名とポート番号を指摘してください
If-Modified-Since 指定された日付に変更された場合にのみ、クライアントがこの Web ページを必要とすることを示します。 サーバーは、更新されたリソースがないことを示す 304 コードをクライアントに送信します
If-Unmodified-Since If-Modified-Since とは反対に、指定された日付以降にドキュメントが変更されていない場合にのみ操作は成功します
リファラー 参照されたページの URL をマークします。たとえば、ページ 1 にいて、ページ 2 へのリンクをクリックすると、ページ 2 のブラウザーリクエストのヘッダーにページ 1 の URL が含まれます
ユーザーエージェント 異なるブラウザまたはクライアントから送信されたリクエストを区別し、異なるタイプのブラウザに異なるコンテンツを返すために使用されます

HttpServletRequest クラス

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

リクエスト オブジェクトは、フォーム データ、Cookie、HTTP メソッドなどを含む HTTP 情報ヘッダーを取得するための一連のメソッドを提供します。

次に、HTTP 情報ヘッダーを取得するために JSP プログラミングでよく使用されるメソッドをいくつか紹介します。詳細については、以下の表を参照してください:

7 8 9 を返します。 23 24 25 26 27 28 29 30

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>php中文网(php.cn)</title>
</head>
<body>
<h2>HTTP 头部请求实例</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>
</body>
</html>

main.jsp にアクセスすると、次の結果が得られます:

jspheadmsg.jpg

上記のコードで HttpServletRequest クラスの他のメソッドを試すことができます。

シリアル番号方法&説明
1Cookie[] getCookies()


クライアント上のすべての Cookie の配列を返します
2列挙型getAttributeNames()


リクエストオブジェクトのすべての属性名のコレクションを返します
3列挙型getHeaderNames()


すべての HTTP ヘッダーの名前セットを返します
4列挙型getParameterNames()


リクエスト内のすべてのパラメーターのセットを返します
5HttpSession getSession()


リクエストに対応するセッション オブジェクトを返します。そうでない場合は、セッション オブジェクトを作成します
6HttpSession getSession(boolean create)


リクエストに対応するセッションオブジェクトを返します。 存在せず、パラメータcreateがtrueの場合は、新しいセッションオブジェクトが返されます
ロケールgetLocale()


現在のページの Locale オブジェクトを返します。これは応答として設定できます

オブジェクトgetAttribute(文字列名)


name という名前の属性値を返します。属性値が存在しない場合は null を返します。

ServletInputStream getInputStream()


要求された入力ストリームを返します

10String getAuthType()


「BASIC」や「SSL」など、サーブレットの保護に使用される認証スキームの名前を返します。JSP に保護手段が設定されていない場合は null を返します
11String getCharacterEncoding()


リクエストの文字エンコードセット名を返します
12String getContentType()


リクエスト本文の MIME タイプを返します。不明な場合は null を返します
13String getContextPath()


リクエスト URI で指定されたコンテキスト パスを返します
14String getHeader(文字列名)


名前で指定された情報ヘッダーを返します
15文字列getMethod()


このリクエストで GET、POST、PUT などの HTTP メソッドを返します
16String getParameter(文字列名)


このリクエストの名前で指定されたパラメータを返します。パラメータが存在しない場合は null を返します
17String getPathInfo()


このリクエスト URL に関連付けられた追加のパスを返します
18文字列getProtocol()


このリクエストで使用されるプロトコル名とバージョンを返します
19String getQueryString()


このリクエスト URL に含まれるクエリ文字列を返します
20文字列getRemoteAddr()


クライアントの IP アドレスを返します
21文字列getRemoteHost()


クライアントのフルネームを返します
22文字列getRemoteUser()


クライアントでログイン認証に合格したユーザーを返します。ユーザーが認証されていない場合は、null
文字列getRequestURI()


リクエストの URI を返します

文字列getRequestedSessionId()


request で指定されたセッション ID を返します

String getServletPath()


リクエストされたサーブレットのパスを返します

String[] getParameterValues(文字列名)


指定された名前のパラメータのすべての値を返します。パラメータが存在しない場合は null を返します

ブール値 isSecure()


リクエストが HTTPS などの暗号化されたチャネルを使用するかどうかを返します

int getContentLength()


リクエスト本文に含まれるバイト数を返します。不明な場合は、-1 を返します

int getIntHeader(文字列名)


指定された名前のリクエストヘッダーの値を返します

int getServerPort()


サーバーのポート番号を返します