Spring Boot 基本

Spring Bootプロジェクトでリダイレクトとフォワードを実装してみた

Webアプリケーションの画面遷移方法には、redirect(リダイレクト)と forward(フォワード)がある。

リダイレクトとフォワードの違いについては、以下のサイトを参照のこと。
https://www.atmarkit.co.jp/ait/articles/0407/06/news077.html

今回は、リダイレクトとフォワードそれぞれで画面遷移を行い、画面遷移先にパラメータを渡すサンプルプログラムを作成してみたので、共有する。

サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから追加/変更したプログラムである。

初期表示画面の内容は以下の通りで、リダイレクト遷移とフォワード遷移を行うボタンを配置している。

また、メイン画面の内容は以下の通りで、リダイレクト遷移・フォワード遷移により渡されたパラメータを表示している。

サラリーマン型フリーランスSEという働き方でお金の不安を解消しよう先日、「サラリーマン型フリーランスSE」という働き方を紹介するYouTube動画を視聴しましたので、その内容をご紹介します。 「サ...

さらに、コントローラクラスの内容は以下の通りで、リダイレクトとフォワードそれぞれで画面遷移を行い、画面遷移先にパラメータを渡す処理を実装している。

また、コンフィグクラスの内容は以下の通りで、HTTP GETメソッドが呼ばれた場合に、jsessionid=XXXというパラメータが表示されるのを防ぐようにしている。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-redirect-forward/demo



サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセスすると、以下のように、初期表示画面が表示されることが確認できる。
サンプルプログラムの実行結果_1

2) 「リダイレクト遷移」ボタンを押下すると、メイン画面に遷移する。このときのURLは、リダイレクト遷移先である「toMainGet」メソッドのURLとなっている。
サンプルプログラムの実行結果_2_1

サンプルプログラムの実行結果_2_2

3) 「戻る」ボタンを押下すると、初期表示画面に遷移する。
サンプルプログラムの実行結果_3_1

サンプルプログラムの実行結果_3_2

4) 「フォワード遷移」ボタンを押下すると、メイン画面に遷移する。このときのURLは、フォワード遷移元である「toForward」メソッドのURLとなっている。
サンプルプログラムの実行結果_4_1

サンプルプログラムの実行結果_4_2

5) 次に、以下のように、DemoConfigBean.javaの「@Bean」アノテーションを無効にし、「初回アクセス時に、URLにjsessionidが付与されるのを防ぐためのBean定義」を無効にする。
サンプルプログラムの実行結果_5

6) Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセス後、「リダイレクト遷移」ボタンを押下すると、URLにjsessionidが付与されることが確認できる。
サンプルプログラムの実行結果_6_1

サンプルプログラムの実行結果_6_2

要点まとめ

  • Webアプリケーションの画面遷移方法には、redirect(リダイレクト)と forward(フォワード)がある。
  • 遷移先コントローラ指定時のパス先頭に、リダイレクト遷移するには「redirect:」を付与し、フォワード遷移するには「forward:」を付与すればよい。
  • HTTP POSTメソッドで呼ばれた場合、リダイレクト遷移先はHTTP GETメソッドとなり、フォワード遷移先はHTTP POSTメソッドとなる。
  • 遷移先にパラメータを渡す場合は、リダイレクト遷移時はFlash Scopeを利用し、フォワード遷移時はModelオブジェクトを利用すればよい。
  • Spring Bootアプリケーションで、HTTP GETメソッドが呼ばれた場合に、jsessionid=XXXというパラメータが表示されるのを防ぐ設定を行うこともできる。