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 30HTTP ヘッダーの例
この例では、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 にアクセスすると、次の結果が得られます:
上記のコードで HttpServletRequest クラスの他のメソッドを試すことができます。
シリアル番号 | 方法&説明 |
---|---|
1 | Cookie[] getCookies() |
2 | 列挙型getAttributeNames() |
3 | 列挙型getHeaderNames() |
4 | 列挙型getParameterNames() |
5 | HttpSession getSession() |
6 | HttpSession getSession(boolean create) |
ロケールgetLocale()
| |
オブジェクトgetAttribute(文字列名)
| |
ServletInputStream getInputStream()
| |
10 | String getAuthType() |
11 | String getCharacterEncoding() |
12 | String getContentType() |
13 | String getContextPath() |
14 | String getHeader(文字列名) |
15 | 文字列getMethod() |
16 | String getParameter(文字列名) |
17 | String getPathInfo() |
18 | 文字列getProtocol() |
19 | String getQueryString() |
20 | 文字列getRemoteAddr() |
21 | 文字列getRemoteHost() |
22 | 文字列getRemoteUser() |
文字列getRequestURI()
| |
文字列getRequestedSessionId()
| |
String getServletPath()
| |
String[] getParameterValues(文字列名)
| |
ブール値 isSecure()
| |
int getContentLength()
| |
int getIntHeader(文字列名)
| |
int getServerPort()
|