―Servlet/JSPリファレンス―

@ITハイブックス編
2003/11/13
Javaプログラミング
ワンポイントレクチャーについて

  コンテキストルートを取得するためのメソッド

   ワンポイントQuestion

 コンテキストルートを取得するためのメソッドは、次のうちどれですか?(単一選択)

A getContextPath()
B getServletPath()
C getRequestURI()
D getRequestURL()
E getPathInfo()

   解説

 HttpServletRequestは、サービス処理本体(doGet()、doPost()など)で受け取るクライアントからサーバに送られたリクエスト情報が格納されているオブジェクトです。言い換えると、問題01-004「HTTPリクエスト」で説明したHTTPリクエストに詰まっている情報をこのオブジェクトから取得することができます。

●HTTPパラメータ

Enumeration getParameterNames()
String getParameter(String name)
String[] getParameterValues(String name)

 詳しくは、問題01-006「Formデータの取得」を参照してください。

●データ共有

void setAttribute(String name, Object value)
Object getAttribute(String name)
Enumeration getAttributeNames()
void removeAttribute(String name)

 詳しくは、問題01-015「Webスコープ内でのデータ共有」を参照してください。

●ヘッダ情報

String getHeader(String name)
Enumeration getHeaders(String name)
Enumeration getHeaderNames()

 詳しくは、問題01-007「HTTPリクエストヘッダの取得」を参照してください。

●要求URL情報

String getContextPath()
String getServletPath()
String getRequestURI()
String getRequestURL()

●クッキー

Cookie[] getCookies()

 詳しくは、問題01-014「Cookie操作」を参照してください。

●セッション情報

HttpSession getSession(boolean create)

 詳しくは、第2章「セッション・トラッキング」を参照してください。

 そのほかには、クライアントから送信されたデータの文字コードを指定するための

void setCharacterEncoding(String env)

があります。文字コードについては、問題01-012「文字コード」を参照してください。

 前記項目についてのほとんどは他節で説明していますので、本節では、

・ヘッダ情報
・要求URL情報

について説明します。

●ヘッダ情報

 問題01-004「HTTPリクエスト」で説明したとおり、HTTPリクエストのヘッダフィールドは「ヘッダ名:値」の形式になっています。

String getHeader(String name)
引数にヘッダ名を指定すると対応する値を戻り値で取得できます。

Enumeration getHeaders(String name)
引数にヘッダ名を指定すると対応するすべての値をString型でEnumerationに格納して戻り値で取得できます。

Enumeration getHeaderNames()
送信されたヘッダ名の一覧をString型でEnumerationに格納して戻り値で取得できます。

●要求URL情報

 以下のようなコードをサービス処理に記述したとします。

PrintWriter out = resp.getWriter();
out.println("<HTML><BODY>");
out.println("getContextPath() : " + req.getContextPath() +"<BR>");
out.println("getServletPath() : " + req.getServletPath() +"<BR>");
out.println("getRequestURI() : " + req.getRequestURI() +"<BR>");
out.println("getRequestURL() : " + req.getRequestURL() +"<BR>");
out.println("</BODY></HTML>");

 http://localhost/j2ee/DisplayPathServletとブラウザからアクセスした場合、その出力結果は、次のようになります。

getContextPath() /j2ee
getServletPath() /DisplayPathServlet
getRequestURI() /j2ee/DisplayPathServlet
getRequestURL() http://localhost/j2ee/DisplayPathServlet

 つまり、

getContextPath()   コンテキストルートの取得
getServletPath() サーブレット名の取得
getRequestURI() コンテキストルート+サーブレット名の取得
getRequestURL() クライアントが要求したURLの取得

 です。

POINT
HTTP要求メソッドを取得するための getMethod()というメソッドもあります。

KEYWORD
■HTTPパラメータ
クライアントから送信される付加的なデータで、GET要求の場合にはURLの一部として送信され、POST要求の場合はHTTPリクエストのボディに格納されます。

   ワンポイントQuestionの解答

正解 A

Java2ラーニングブック −Web Component Developer編−

本記事は@ITハイブックスシリーズ「J2EEラーニングブック −Web Component Developer編−」(技術評論社)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。

 

Javaプログラミング・ワンポイントレクチャー INDEX





Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間