カテゴリ: Servlet 更新日: 2025/09/25

JavaのPushBuilderクラスpathメソッドを完全ガイド!初心者でもわかるHTTP/2プッシュ対象の指定方法

PushBuilderのpathメソッド
PushBuilderのpathメソッド

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

生徒

「先生、PushBuilderでリソースをサーバープッシュしたいんですが、どのファイルを送るかってどう指定するんですか?」

先生

「それにはpathメソッドを使います。プッシュしたいリソースのパスを指定すればOKですよ。」

生徒

「なるほど!たとえばCSSファイルとかJavaScriptファイルもいけますか?」

先生

「もちろん。サーバーが提供しているリソースであれば何でも指定できます。それでは詳しく見ていきましょう!」

1. PushBuilderとは?

1. PushBuilderとは?
1. PushBuilderとは?

Java Servlet APIのjavax.servlet.http.PushBuilderは、HTTP/2で導入されたサーバープッシュ機能を使うためのインターフェースです。WebページのHTMLを返すと同時に、必要なリソース(CSS、JavaScript、画像など)をクライアントに先回りして送ることができます。

2. pathメソッドとは?

2. pathメソッドとは?
2. pathメソッドとは?

path(String path)メソッドは、PushBuilderでサーバーからプッシュする対象のリソースパスを指定するためのメソッドです。このパスはWebアプリケーションのルートからの相対パスになります。たとえばstyles/main.cssscripts/app.jsなどです。

3. pathメソッドの基本的な使い方

3. pathメソッドの基本的な使い方
3. pathメソッドの基本的な使い方

次の例は、pathメソッドを使ってCSSファイルをプッシュするサンプルコードです。


import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.PushBuilder;

@WebServlet("/push-path")
public class PushPathServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        PushBuilder pushBuilder = request.newPushBuilder();

        if (pushBuilder != null) {
            pushBuilder.path("styles/theme.css").push();
        }

        response.setContentType("text/html");
        response.getWriter().println("<html><body>CSSをプッシュしました</body></html>");
    }
}

4. pathに指定する値のポイント

4. pathに指定する値のポイント
4. pathに指定する値のポイント

pathで指定する文字列には、次のようなルールがあります。

  • スラッシュ(/)から始めない(アプリケーションルートからの相対パス)
  • 静的リソースの配置場所と一致していること
  • URLエンコードが必要な場合は事前に処理すること

5. 複数リソースをプッシュしたい場合

5. 複数リソースをプッシュしたい場合
5. 複数リソースをプッシュしたい場合

PushBuilderは同じリクエストの中で複数回使用可能です。たとえば、CSSとJavaScriptを一緒にプッシュしたい場合は、以下のように記述します。


if (pushBuilder != null) {
    pushBuilder.path("styles/theme.css").push();
    pushBuilder.path("scripts/app.js").push();
}

6. pathで指定するファイルが存在しないとどうなる?

6. pathで指定するファイルが存在しないとどうなる?
6. pathで指定するファイルが存在しないとどうなる?

プッシュ対象のファイルが存在しない場合、エラーにはなりませんが、クライアント側でリソースが受信できません。ログにワーニングが出ることがあります。プッシュ前にファイルの存在確認はできないため、事前にデプロイされた静的リソースを確認しておくことが大切です。

7. HTMLとの連携

7. HTMLとの連携
7. HTMLとの連携

PushBuilderでリソースをプッシュしても、HTML側で明示的にリンクやスクリプトタグを記述しないと、ブラウザが利用しません。以下のようにHTML側でも指定しておきましょう。


<head>
    <link rel="stylesheet" href="styles/theme.css">
    <script src="scripts/app.js"></script>
</head>

8. pathと他のPushBuilderメソッドの組み合わせ

8. pathと他のPushBuilderメソッドの組み合わせ
8. pathと他のPushBuilderメソッドの組み合わせ

pathは、methodqueryStringsessionIdsetHeaderaddHeaderなどのメソッドと組み合わせて使うのが一般的です。以下はその例です。


pushBuilder.path("api/data")
           .method("GET")
           .queryString("lang=ja")
           .setHeader("Accept", "application/json")
           .push();

サーブレットやJSPの基礎を体系的に理解したい人には、 定番の入門書がこちらです。

スッキリわかるサーブレット&JSP入門をAmazonで見る

※ Amazon広告リンク

カテゴリの一覧へ
新着記事
New1
Java
Javaのラムダ式で注意したい変数キャプチャの落とし穴とは?代入と変数名のベストプラクティス解説
更新記事
New2
Spring
Springの@GetMappingアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
更新記事
New3
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「StartingWith」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
No.3
Java&Spring記事人気No3
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.4
Java&Spring記事人気No4
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.5
Java&Spring記事人気No5
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.6
Java&Spring記事人気No6
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.7
Java&Spring記事人気No7
Spring
SpringのModelクラスとaddAttributeメソッドの使い方を完全ガイド!初心者でも安心
No.8
Java&Spring記事人気No8
Spring
SpringDataJPAのJPAクエリメソッド「EndingWith」の使い方を完全ガイド!初心者向け解説