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.