カテゴリ: Spring 更新日: 2026/05/09

SpringのRedirectAttributesの使い方を初心者向けに完全解説!リダイレクト時の値受け渡しをやさしく理解

SpringのRedirectAttributes
SpringのRedirectAttributes

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

生徒

「Spring Bootで画面遷移したあとにメッセージを表示したいんですが、どうすればいいですか?」

先生

「Springでは、RedirectAttributesを使うことで、リダイレクト先へデータを渡すことができます。」

生徒

「リダイレクト先へ値を渡せるんですか?」

先生

「はい。Spring MVCやSpring Bootでは、登録完了メッセージやエラーメッセージの表示でよく利用されています。」

生徒

「どんな場面で使うのか詳しく知りたいです。」

先生

「それでは、SpringのRedirectAttributesについて、初心者向けに丁寧に学んでいきましょう。」

1. RedirectAttributesとは?

「1. RedirectAttributesとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. RedirectAttributesとは?
1. RedirectAttributesとは?

Spring FrameworkのRedirectAttributesは、 リダイレクト時にデータを渡すためのインターフェースです。 Spring MVCやSpring BootのWebアプリケーション開発では、 登録完了メッセージやエラー通知を表示する際によく使われます。

通常、リダイレクトを行うと、 リクエストスコープのデータは消えてしまいます。 そのため、画面遷移後にメッセージを表示したい場合は、 RedirectAttributesを利用する必要があります。

Spring Boot初心者は、 「redirectしたら値が消えた」という問題に直面することが非常に多いです。 その問題を解決できるのが、 RedirectAttributesです。

ポイント
Spring BootのRedirectAttributesは、 リダイレクト後の画面へ値を渡すための便利な機能です。

2. 基本的な使い方

2. 基本的な使い方
2. 基本的な使い方

まずは、 RedirectAttributesの基本的な使い方を確認しましょう。

Spring Bootでは、 Controllerメソッドの引数に RedirectAttributesを指定するだけで利用できます。


@Controller
public class UserController {

    @PostMapping("/save")
    public String save(
            RedirectAttributes redirectAttributes) {

        redirectAttributes.addFlashAttribute(
                "message",
                "登録が完了しました");

        return "redirect:/complete";
    }
}

上記のコードでは、 リダイレクト先へ「登録が完了しました」というメッセージを渡しています。

addFlashAttribute()を利用することで、 一時的なデータをリダイレクト先へ渡せます。

Spring MVCでは、 この機能をフラッシュスコープと呼びます。

3. リダイレクト先で値を取得する方法

3. リダイレクト先で値を取得する方法
3. リダイレクト先で値を取得する方法

次は、 リダイレクト先で値を取得する方法を確認しましょう。


@Controller
public class CompleteController {

    @GetMapping("/complete")
    public String complete() {

        return "complete";
    }
}

View側では、 渡されたメッセージを表示できます。


<div>
    完了メッセージ:
    <span th:text="${message}"></span>
</div>

このように、 Spring Bootではリダイレクト後でもメッセージ表示が可能です。

実際のWebアプリケーションでは、 会員登録完了や更新成功メッセージなどで非常によく使われています。

4. addAttributeとの違い

「4. addAttributeとの違い」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. addAttributeとの違い
4. addAttributeとの違い

Spring Boot初心者が混乱しやすいのが、 addFlashAttribute()addAttribute()の違いです。

addAttribute()は、 URLパラメータとして値を渡します。


@PostMapping("/sample")
public String sample(
        RedirectAttributes redirectAttributes) {

    redirectAttributes.addAttribute(
            "id",
            100);

    return "redirect:/detail";
}

上記の場合、 URLは次のようになります。


/detail?id=100

一方、 addFlashAttribute()はURLへ値を表示しません。 そのため、メッセージ表示や一時データ管理に向いています。

メソッド 特徴
addAttribute URLパラメータとして渡す
addFlashAttribute 一時的なデータとして渡す

5. 実務でよくある利用例

5. 実務でよくある利用例
5. 実務でよくある利用例

Spring Bootの実務開発では、 RedirectAttributesはさまざまな場面で利用されています。

会員登録完了画面

登録成功メッセージを表示する際によく利用されます。

更新成功通知

商品情報やユーザー情報の更新後に利用されます。

削除完了メッセージ

データ削除後に一覧画面へ戻る際に便利です。

ログイン失敗通知

エラーメッセージ表示にも利用されます。

このように、 Spring MVCではユーザーへの通知表示で RedirectAttributesが非常に重要な役割を持っています。

6. 初心者がハマりやすい注意点

6. 初心者がハマりやすい注意点
6. 初心者がハマりやすい注意点

Spring Boot初心者が RedirectAttributesで失敗しやすいポイントもあります。

  • redirectを書き忘れる
  • forwardと混同する
  • addAttributeとaddFlashAttributeを間違える
  • リダイレクト先で値が消える原因を理解していない

特に初心者は、 return "redirect:/sample"の書き方を忘れるケースが多いです。


return "redirect:/complete";

また、 forward:との違いも理解しておく必要があります。

redirectはブラウザへ再リクエストを指示しますが、 forwardはサーバー内部で画面遷移します。

Spring Boot開発では、 POST後の画面遷移でredirectを利用するケースが非常に多いです。

7. PRGパターンとの関係

「7. PRGパターンとの関係」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. PRGパターンとの関係
7. PRGパターンとの関係

Spring Bootでは、 PRGパターンと呼ばれる設計がよく利用されます。

PRGとは、 Post Redirect Getの略です。

フォーム送信後にそのまま画面表示すると、 ブラウザ更新時に再送信が発生する場合があります。

その問題を防ぐために、 一度リダイレクトを行う設計が利用されます。


@PostMapping("/register")
public String register(
        RedirectAttributes redirectAttributes) {

    redirectAttributes.addFlashAttribute(
            "message",
            "登録成功");

    return "redirect:/finish";
}

このようなPRGパターンは、 Spring Boot実務開発で非常によく使われています。

Webアプリケーションの品質向上にもつながるため、 初心者のうちから理解しておくことが重要です。

8. RedirectAttributesを理解すると開発効率が上がる

8. RedirectAttributesを理解すると開発効率が上がる
8. RedirectAttributesを理解すると開発効率が上がる

Spring Frameworkの RedirectAttributesを理解すると、 Spring MVCの画面遷移処理が非常に分かりやすくなります。

特にSpring Bootでは、 フォーム処理や登録処理が非常に多いため、 リダイレクト時のデータ管理は重要な知識になります。

また、 エラーメッセージ表示や成功通知など、 ユーザーへ情報を分かりやすく伝えるためにも役立ちます。

Java初心者の場合、 最初はredirectやforwardの違いが難しく感じるかもしれません。 しかし、 実際にコードを書きながら動作確認することで理解しやすくなります。

Spring Bootの RedirectAttributesは、 実務でも非常によく使われる重要機能です。 そのため、 基本的な使い方をしっかり理解しておくことで、 Webアプリケーション開発のスキル向上につながります。

覚えておきたいこと
Spring Bootでは、 リダイレクト後に値を渡したい場合、 RedirectAttributesが非常に便利です。

まとめ

まとめ
まとめ

今回は、Spring FrameworkやSpring Bootで非常によく利用される RedirectAttributesについて詳しく学びました。 Spring MVCのWebアプリケーション開発では、 フォーム送信後の画面遷移処理が非常に重要になります。 その中でも、 リダイレクト後にメッセージや値を受け渡しできる RedirectAttributesは、 実務でも頻繁に利用される重要な機能です。

特にSpring Boot初心者は、 redirect後に値が消えてしまう問題で悩むことが多くあります。 通常のリクエストスコープは、 リダイレクト時に引き継がれません。 そのため、 登録完了メッセージや更新成功メッセージを表示したい場合、 RedirectAttributesが必要になります。

Spring MVCでは、 フォーム処理後にPRGパターンを利用するケースが非常に多くあります。 PRGパターンとは、 Post Redirect Getの略で、 フォーム送信後にリダイレクトを行う設計方法です。 この設計を利用することで、 ブラウザ更新時の二重送信を防止できます。

重要なポイント
Spring Bootでは、 リダイレクト後にデータを渡したい場合、 RedirectAttributesが非常に重要な役割を持っています。

RedirectAttributesの基本を振り返る

Spring Bootでは、 Controllerの引数へ RedirectAttributesを指定するだけで利用できます。 特別な設定が不要なため、 初心者でも比較的導入しやすい機能です。


@Controller
public class ProductController {

    @PostMapping("/product/save")
    public String save(
            RedirectAttributes redirectAttributes) {

        redirectAttributes.addFlashAttribute(
                "message",
                "商品登録が完了しました");

        return "redirect:/product/list";
    }
}

このコードでは、 商品登録後に一覧画面へリダイレクトしています。 同時に、 「商品登録が完了しました」というメッセージも渡しています。

Spring Boot初心者は、 「redirect後でも値が保持されるのか」が分かりにくいことがあります。 しかし、 addFlashAttribute()を利用すると、 一時的な値をリダイレクト先へ安全に渡せます。

addFlashAttributeの役割を理解する

Spring Frameworkでは、 一時的なデータ保存の仕組みとしてフラッシュスコープがあります。 その機能を利用するのが addFlashAttribute()です。

URLへ値を表示したくない場合にも非常に便利です。 例えば、 成功メッセージやエラーメッセージなど、 一時的な通知表示に向いています。


redirectAttributes.addFlashAttribute(
        "errorMessage",
        "入力内容に誤りがあります");

このように書くことで、 リダイレクト先でエラーメッセージを表示できます。

Spring MVCでは、 ユーザーへ分かりやすい通知を表示することが非常に重要です。 そのため、 RedirectAttributesは実務でも頻繁に利用されています。

addAttributeとの違いも重要

Spring Boot初心者が特に混乱しやすいのが、 addAttribute()addFlashAttribute()の違いです。

addAttribute()は、 URLパラメータとして値を渡します。 一方で、 addFlashAttribute()は、 URLへ表示せずに値を渡せます。


redirectAttributes.addAttribute(
        "id",
        200);

上記の場合、 URLは次のようになります。


/detail?id=200

URLへ表示されるため、 検索条件やID受け渡しなどに向いています。

一方、 完了メッセージなどをURLへ表示したくない場合は、 addFlashAttribute()を利用するほうが適しています。

リダイレクト先での表示方法

Spring Bootでは、 Thymeleafなどのテンプレートエンジンと組み合わせて利用されることが多いです。


<div class="alert alert-success">
    <span th:text="${message}"></span>
</div>

このように書くことで、 リダイレクト後の画面でメッセージを表示できます。

Spring MVCでは、 ユーザーへ視覚的に通知を伝えることも重要です。 Bootstrapのalertクラスなどを組み合わせることで、 分かりやすい画面を作成できます。

実務でよく使われる場面

Spring Bootの実務開発では、 RedirectAttributesは非常に多くの場面で使われています。

  • 会員登録完了メッセージ
  • 商品登録成功通知
  • 削除完了画面
  • ログイン失敗通知
  • 入力エラーメッセージ
  • 更新成功通知

特にSpring Bootでは、 ユーザー操作後に一覧画面へ戻すケースが非常に多くあります。 その際に、 完了通知やエラー通知を表示するため、 RedirectAttributesが重要になります。

初心者が覚えておきたい注意点

Spring Boot初心者は、 redirectとforwardの違いも理解しておく必要があります。

redirectはブラウザへ新しいリクエストを送信します。 一方、 forwardはサーバー内部で処理を移動します。


return "redirect:/user/list";

redirectを利用する場合、 通常のリクエストスコープは消えるため、 RedirectAttributesが必要になります。

また、 redirectを書き忘れてしまう初心者も非常に多いです。 Spring Bootでは、 文字列の先頭へ redirect:を付ける必要があります。

Spring Boot開発で非常に重要な知識

Spring Frameworkの RedirectAttributesを理解すると、 Spring MVCの画面遷移処理が非常に分かりやすくなります。

また、 PRGパターンの理解にもつながるため、 Webアプリケーション開発全体の知識向上にも役立ちます。

Java初心者の場合、 最初はリダイレクト処理が難しく感じることがあります。 しかし、 実際にサンプルコードを書きながら動作確認することで、 少しずつ理解しやすくなります。

Spring Bootでは、 フォーム処理や登録処理が非常に多いため、 RedirectAttributesは実務でも頻繁に利用されます。 そのため、 基本的な使い方をしっかり理解しておくことが、 Webアプリケーション開発スキル向上につながります。

先生と生徒の振り返り会話

生徒

「RedirectAttributesは、リダイレクト後に値を渡すための機能だったんですね。」

先生

「その通りです。Spring MVCでは非常によく利用される重要な機能です。」

生徒

「addAttributeとaddFlashAttributeの違いも分かってきました。」

先生

「URLへ表示したい場合はaddAttribute、表示したくない場合はaddFlashAttributeを利用します。」

生徒

「PRGパターンでも使われるんですよね。」

先生

「はい。フォーム再送信を防ぐためにも、Spring Bootでは非常に重要な設計です。」

生徒

「実務でもかなり使われそうですね。」

先生

「会員登録や更新処理など、多くの画面で利用されます。実際にコードを書いて慣れていきましょう。」

カテゴリの一覧へ
新着記事
New1
Java
JavaのNotSerializableExceptionを完全解説!初心者でも理解できるシリアライズと例外処理
新規投稿
New2
Spring
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス
更新記事
New3
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門
更新記事
New4
Java
Javaのjava.mathとBigIntegerのintValueメソッドを完全解説!初心者でもわかる数値変換の基本
更新記事
人気記事
No.1
Java&Spring記事人気No1
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.2
Java&Spring記事人気No2
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.3
Java&Spring記事人気No3
JSP
JSPでフォームを表示して入力を受け取る基本手順をやさしく解説!初心者向けフォーム処理の入門ガイド
No.4
Java&Spring記事人気No4
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.5
Java&Spring記事人気No5
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.6
Java&Spring記事人気No6
JSP
JSPでCSSやJSを読み込む基本!外部ファイルのパス指定に注意しよう
No.7
Java&Spring記事人気No7
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.8
Java&Spring記事人気No8
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方