 |
サーブレットパスの構成要素を取得する
山田祥寛
2004/7/27
|
|
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メソッドを使用します。
それぞれのメソッドと取得できる情報の関係を図にしたものを、以下に示します。
 |
| メソッドと取得できる情報の関係 |
TechTargetジャパン
キャリアアップ

**先週の人気講座ランキング**
〜 Android編 〜