Jsp-client-request

提供:Dev Guides
移動先:案内検索

JSP-クライアント要求

この章では、JSPのクライアントリクエストについて説明します。 ブラウザがWebページを要求すると、多くの情報がWebサーバーに送信されます。 この情報はHTTP要求のヘッダーの一部として移動するため、この情報を直接読み取ることはできません。 詳細については、link:/http/index [HTTP Protocol]を確認してください。

次の表に、ブラウザから送信される重要なヘッダー情報を示します。 この情報は、Webプログラミングで頻繁に使用されます-

S.No. Header & Description
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接続を処理できるかどうかを示します。 永続的な接続により、クライアントまたは他のブラウザーは、単一の要求で複数のファイルを取得できます。 Keep-Alive の値は、永続的な接続を使用する必要があることを意味します。

7

Content-Length

このヘッダーは POST リクエストにのみ適用され、POSTデータのサイズをバイト単位で示します。

8

Cookie

このヘッダーは、以前にブラウザに送信したCookieをサーバーに返します。

9

Host

このヘッダーは、元のURLで指定されたホストとポートを指定します。

10

If-Modified-Since

このヘッダーは、指定された日付以降に変更された場合にのみ、クライアントがページを必要としていることを示します。 サーバーは、新しい結果が利用できない場合、 Not Modified ヘッダーを意味するコード304を送信します。

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エンジンはその要求を表す新しいオブジェクトを作成します。

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

次の表に、JSPプログラムでHTTPヘッダーを読み取るために使用できる重要なメソッドをリストします。 これらのメソッドは、Webサーバーへのクライアント要求を表す_HttpServletRequest_オブジェクトで使用できます。

S.No. Method & Description
1

Cookie[] getCookies()

クライアントがこのリクエストで送信したすべてのCookieオブジェクトを含む配列を返します。

2

Enumeration getAttributeNames()

このリクエストで使用可能な属性の名前を含む列挙を返します。

3

Enumeration getHeaderNames()

このリクエストに含まれるすべてのヘッダー名の列挙を返します。

4

Enumeration getParameterNames()

このリクエストに含まれるパラメーターの名前を含むStringオブジェクトの列挙を返します。

5

HttpSession getSession()

このリクエストに関連付けられた現在のセッションを返すか、リクエストにセッションがない場合は作成します。

6

HttpSession getSession(boolean create)

このリクエストに関連付けられている現在のHttpSessionを返します。現在のセッションがなく、作成がtrueの場合、新しいセッションを返します。

7

Locale getLocale()

Accept-Languageヘッダーに基づいて、クライアントがコンテンツを受け入れる優先ロケールを返します。

8

Object getAttribute(String name)

名前付き属性の値をObjectとして返します。指定された名前の属性が存在しない場合は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()

プロトコル名からHTTPリクエストの最初の行のクエリ文字列までのこのリクエストのURLの部分を返します。

24

String getRequestedSessionId()

クライアントによって指定されたセッションIDを返します。

25

String getServletPath()

JSPを呼び出すこのリクエストのURLの一部を返します。

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ヘッダーリクエストの例

以下は、 HttpServletRequest の* getHeaderNames()*メソッドを使用してHTTPヘッダー情報を読み取る例です。 このメソッドは、現在の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ヘッダーリクエストの例

Header Name Header Value(s)
accept /
accept-language en-us
user-agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8)
accept-encoding gzip, deflate
host localhost:8080
connection Keep-Alive
cache-control no-cache

同様の方法ですべての方法で作業してみてください。