カテゴリ: Servlet 更新日: 2025/10/27

JavaのHttpServletRequestWrapperとgetPathInfoメソッドを徹底解説!初心者向けサーブレットURL情報取得ガイド

HttpServletRequestWrapperのgetPathInfoメソッド
HttpServletRequestWrapperのgetPathInfoメソッド

先生と生徒の会話形式で理解しよう

生徒

「Javaのサーブレットで、URLの一部だけを取り出す方法ってありますか?」

先生

「Javaでは、HttpServletRequestWrapperクラスのgetPathInfoメソッドを使って、URLの追加パス情報を簡単に取得できますよ。」

生徒

「それってどんなときに使うんですか?」

先生

「それでは実際の使い方や仕組みを丁寧に見ていきましょう!」

1. javax.servlet.httpパッケージとは

1. javax.servlet.httpパッケージとは
1. javax.servlet.httpパッケージとは

Javaのjavax.servlet.httpパッケージは、Webアプリケーションを構築する上で非常に重要なパッケージで、HTTPプロトコルを扱うためのクラスやインターフェースが多数含まれています。

サーブレットを使ってリクエストとレスポンスを処理する際には、このパッケージに含まれるHttpServletHttpServletRequestHttpServletResponseなどを活用します。

この中にあるHttpServletRequestWrapperは、既存のリクエストオブジェクトに処理を追加したい場合などに使われるラッパークラスです。

2. HttpServletRequestWrapperとは

2. HttpServletRequestWrapperとは
2. HttpServletRequestWrapperとは

HttpServletRequestWrapperクラスは、HttpServletRequestのすべてのメソッドを継承しつつ、必要な部分だけをオーバーライドして挙動をカスタマイズできる便利なクラスです。

たとえば、セキュリティ対策やURLの再構築、特殊なフィルタ処理を行う場面などで使われます。既存のリクエストの情報を変更せずに一時的な処理を追加する場面でも活躍します。

3. getPathInfoメソッドの基本的な役割

3. getPathInfoメソッドの基本的な役割
3. getPathInfoメソッドの基本的な役割

getPathInfoメソッドは、リクエストURLの中でサーブレットパスのあとに続く追加情報を取得するためのメソッドです。

たとえば、サーブレットが/productにマッピングされていて、URLが/product/123/detailの場合、この/123/detailの部分がgetPathInfoで取得できます。

このように、リソースのIDやサブパスを取得して処理を切り替えるときに便利です。

4. getPathInfoの使い道と注意点

4. getPathInfoの使い道と注意点
4. getPathInfoの使い道と注意点

getPathInfoを使えば、REST風の設計やパラメータのような使い方が可能になります。たとえば以下のような用途があります:

  • 商品IDごとの処理分岐
  • ユーザーごとのページ表示
  • カテゴリやタグ情報の取得

ただし、URLにサーブレットマッピング以外の情報が含まれていないと、getPathInfonullを返すので注意が必要です。

5. HttpServletRequestWrapperでgetPathInfoを使う方法

5. HttpServletRequestWrapperでgetPathInfoを使う方法
5. HttpServletRequestWrapperでgetPathInfoを使う方法

それでは、HttpServletRequestWrapperを使ってgetPathInfoメソッドでパス情報を取得するサンプルコードを見てみましょう。


@WebServlet("/info/*")
public class PathInfoServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper(request);
        String pathInfo = wrapper.getPathInfo();

        response.setContentType("text/plain; charset=UTF-8");
        if (pathInfo != null) {
            response.getWriter().println("追加パス情報: " + pathInfo);
        } else {
            response.getWriter().println("パス情報は存在しません。");
        }
    }
}

6. getPathInfoの実行結果例

6. getPathInfoの実行結果例
6. getPathInfoの実行結果例

サーブレットが/info/*にマッピングされていて、次のようなURLでアクセスした場合:

http://localhost:8080/yourapp/info/user/789

そのときの出力結果は以下のようになります。


追加パス情報: /user/789

もしURLが/infoだけだった場合には、次のような出力になります。


パス情報は存在しません。

7. 初心者が気をつけたいポイント

7. 初心者が気をつけたいポイント
7. 初心者が気をつけたいポイント

getPathInfoメソッドは、サーブレットパス以降の部分だけを取り出す機能なので、getRequestURIgetServletPathなどと組み合わせて使うことで、より細かい制御が可能になります。

ただし、アプリケーションの設計によっては、nullが返るケースも多いため、常にnullチェックを忘れずに行うことが大切です。

8. Webアプリケーションでの活用例

8. Webアプリケーションでの活用例
8. Webアプリケーションでの活用例

商品詳細ページや、ユーザーのプロフィールページなど、動的にURLが変化する仕組みを作りたいときにgetPathInfoは非常に便利です。

たとえば、ECサイトで/item/456というURLから456のIDを取り出して商品情報をデータベースから取得するようなケースでよく使われます。

初心者のうちは、URLの構造やマッピングの意味を理解しながら使っていくことが大切です。

関連記事:
カテゴリの一覧へ
新着記事
Javaのラムダ式で戻り値とvoidの使い方を解説!returnの書き方も完全理解
Javaのメソッド参照とコンストラクタ参照の使い方を完全ガイド!初心者向けに::とClass::newを解説
Javaのラムダ式の書き方を徹底解説!アロー演算子->の基本と使い方
Thymeleafのth:eachの使い方!ループ回数やindexなどの繰り返し処理を学ぼう
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Spring Boot JPA入門:エンティティ/リポジトリの基本と作り方
No.3
Java&Spring記事人気No3
Javaの@Validアノテーションを徹底解説!初心者でもわかる入力値検証の基本
No.4
Java&Spring記事人気No4
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス