SpringMVCを使って、画面遷移させる
## 【この記事を読むと分かること】 ***➀JSPでリンクをつけられるようになる("spring:url"の利用) ②Controllerクラスを作成できるようになる ➂SpringMVCを用いて画面遷移ができるようになる***
今回は、ControllerとViewのみを対象とした説明をします。
SpringMVCの基本となる「DaoxAOP」から知りたいという方は、別記事をご覧ください。(近日中に公開予定)
## 【目指すべき完成形】 リンク「次へ」をクリックすると、画面が変わります。
## 【手順】 ➀実際に表示する画面(View)のJSPを作る。 ②Controllerクラスを作る ➂コントローラでフォワードする。
【詳しい説明】
➀実際に表示する画面(View)のJSPを作る。
今回は、リンク「次へ」を表示するJSPと、遷移後の画面を表示するJSPの2つが必要なので、新規作成をします。
今回は、それぞれnext.jsp、after.jspとします。
### ★JSPでリンクをつける(spring:urlの利用)
***spring:url var=”任意の変数名” value=”コンテキスト名を除くパス”***
**➀Taglib宣言をする**
「spring:~」は、Springのカスタムタグです。
そのため、使う前にTaglib宣言が必要です。
②任意の変数名にパスを入れる
valueに入っているパスを、varで設定した変数に入ることで、他のタグで生成されたURLをEL式で参照できるようになります。
Valueに指定した、「遷移した先のパス」は自分で好きなものを設定できます。
ただし、ここで指定したパスは、ControllerクラスのHandlerメソッドでリクエストマッピングを指定する際に指定するパスと同一のものでなければいけません。
➂EL式でリンクにする
変数のHTMLと同じように、「a href=”★”」の★に、先ほどの変数を入れます。
この際、EL式を用いることに注意しましょう!
### ②Controllerクラスを作る
クラス宣言の前に***「@Controllerアノテーション」***をつけて、Controllerクラスとして機能させます。
Controllerクラスとは、リクエストを処理するクラスです。
MVCのCに当たる「Handlerメソッド」が定義されているクラスですね。
ApplicationContextに設定されると、Controllerクラスとして機能できるようになります。
ApplicationContextに設定するためには、@Controllerをつけなければなりません。
クラス宣言の前に「@Controller」と入力します。
### ➂Controllerクラスで表示させたいJSPをフォワードする。
フォワードするために使うのは、Handlerメソッドです。
Handlerメソッドは、Controllerクラスと共にMVCのCに当たるControllerの役割を担います。
実質的には、HandlerメソッドがControllerです。
Handlerメソッドの定義方法は、基本的に普通のメソッド定義の形と同じですが、デフォルトのような型があります。
public String メソッド名(){
//処理内容
return “遷移先のView名”;
}
ちなみに、最後の「遷移先のView名」とは、***遷移する先のJSPファイル名から「.jsp」を抜いた文字***が入ります。
今回でいうと、JSPファイルが「next.jsp」なので、「next」がView名になります。
このように定義したメソッドを、Handlerメソッドにするには、メソッド定義の前に**リクエストマッピング**を指定する必要があります。
リクエストマッピングとは、Spring MVC のコントローラに付与して、リクエストURLに対して、どのメソッドが処理を実行するか定義するアノテーションのことです。
リクエストマッピングは、3種類あります。
@RequestMapping…GETとPOSTの両方を行える
@GetMapping…GETのみを行う
@PostMapping…POSTのみを行う
リクエストマッピングは、あくまでも機能をバージョンアップしているだけに過ぎません。
そのため、リクエストマッピングをつけただけでは遷移先がわからないままなので、パスを指定してあげましょう。
指定方法は、各アノテーションの後ろに、先ほどのJSPと同様に「コンテキスト名を除くパス」を入れるだけです。
はじめの表示JSPは、”/”でOKです。
今回の場合、初めにnext.jspを表示したいので、
@RequestMapping(”/”)とします
**※コンテキスト名を除くパスについて** 一番初めに表示される画面(今回はnext.jsp)に関しては、基本的に「”/”」になりますが、実は自分で決めることもできます。
パス指定は、JSPの説明部分でも記載したように、たとえば、「/aaa」であっても、JSPとControllerで同じパスを指定していれば問題ありません。
初心者の私も、「この”/”はどこから来たんだ?」と、非常に理解の苦しんだ点でしたので、補足いたしました。(この「/」はコンテキストルートですね)
アノテーションをつけて定義したら、フォワードの完成です。
ちなみに、フォワードではなく、リダイレクトをしたい時には、最後に返す時に**return “redirect:view名”;**に変えればOKです。