サーブレットパスの構成要素を取得するJavaTips 〜JSP/サーブレット編

» 2004年07月27日 10時00分 公開
[山田祥寛@IT]

 HttpServletRequestクラスは、クライアントからリクエストされたパス(URL)の情報を取得するために、さまざまなメソッドを用意しています。リクエストURLは、アクセスログを記録するときや、ページへのアクセス制御を監視するときなど、意外と多くの用途で利用できる情報です。

リクエストパス取得用のメソッド
メソッド 取得できるパス情報
getContextPath コンテキストパス
getServletPath サーブレットパス
getPathInfo 拡張パス
getPathTranslated 拡張パス(物理パス)
getRequestURL リクエスト時のURL
getRequestURI コンテキストパスから拡張パスまで

 以下では、これらのメソッドを使って、リクエストされたURLからパス情報を取り出す例をいくつか紹介します。リクエストされたURLは、仮に「http://localhost:8080/javatips/ServletPath/sample_param/」とします。

out.println(request.getContextPath());
  // /javatips
out.println(request.getServletPath());
  // /ServletPath
out.println(request.getPathInfo());
  // /sample_param/
out.println(request.getPathTranslated());
  // C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\javatips\sample_param
out.println(request.getRequestURL());
  // http://localhost:8080/javatips/ServletPath/sample_param/
out.println(request.getRequestURI());
  // /javatips/ServletPath/sample_param/

 「getContext+getServletPath+getPathInfo」で、クライアントからリクエストされた実際のURIを再構築することができます。これは、getRequestURIメソッドの戻り値と等価です。

 プロトコルやホスト名も含めた完全なURLを取得したい場合は、getRequestURLメソッドを使用します。ほかのメソッドがすべてString型の戻り値を返すのに対し、getRequestURLメソッドだけはStringBuffer型の戻り値を返す点にも注目してください。つまり、リクエストURLを基にして、新たなURLに再編集したい場合に、getRequestURLメソッドは有効です。

 リクエストURLを(拡張パス情報も含めた)完全物理パスとして取得したい場合は、getPathTranslatedメソッドを使用します。

 それぞれのメソッドと取得できる情報の関係を図にしたものを、以下に示します。

メソッドと取得できる情報の関係 メソッドと取得できる情報の関係

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。