JavaのSpring FrameworkのMVCのControllerでよく使う基本的なアノテーション@RequestMapping
や、@BindingResult
、オブジェクトのModel
などを紹介します。
🚕 Controllerの処理対象のパスを指定:@RequestMapping
value属性
Java Spring MVCのControllerの処理対象となるURLを@RequestMapping
アノテーションのvalue
オプションで指定します。(value
は最初の/
は省略できます)
// value で処理対象のパスを指定 |
method属性
GETやPOSTなどのmethod
オプションで指定します。
// methodでmethodを指定 |
GET POST, PUT, PATCH, DELETE, HEAD, OPTIONS, TRACE
を指定可能です。
🏈 GETリクエストのアノテーション:@GetMapping
@RequestMapping
のGETリクエスト用のアノテーションが@GetMapping
です。記述の省略と可読性の向上が目的です。
"books") ( |
🗽 POSTリクエストのアノテーション:@PostMapping
@RequestMapping
のPOSTリクエスト用のアノテーションが@PostMapping
です。記述の省略と可読性の向上が目的です。
"books/create") ( |
🤔 RESTパラーメータの受取:@PathVaribable
@PathVaribable
は/books/1
のようにREST形式のURLのパラメータ1
を受け取るのに使います。value属性は省略でき、省略した場合は引数名をパラメータ名と解釈します。
"/books/{id}") ( |
🐹 リクエストパラーメータの受取:@RequestParam
@RequestParam
は?order=price
のようにリクエストパラメータorder
を受け取るのに使います。value属性は省略でき、省略した場合は引数名をパラメータ名と解釈します。
"/books") ( |
🍄 コントローラからビューに値を渡す:ModelMap
コントローラからビューに値を渡すのに、メソッドの仮引数にModelMap
を指定する方法があります。
"/books") ( |
Model
、ModelMap
、ModelAndView
の簡単な説明です。
オプション | 説明 |
---|---|
Model |
Model はインターフェースでaddAttribute メソッドなどをもつ |
ModelMap |
ModelMap はMAPインターフェースの実装。Mapメソッドをもと |
ModelAndView |
ModelMap とviewオブジェクトのコンテナ |
😼 RequestMappingのアクション前に実行:@ModelAttribute
@ModelAttribute
をメソッドにつけるとRequestMapping
のアクションを実行する前にそのメソッドが呼び出されます。
"create") (value = |
@ModelAttribute
はアクションの引数に付与することもできます。その場合は自動的に同名のフィールドにマッピングされ、リクエストスコープにも設定されます。
🍮 バリデーション結果を格納:@BindingResult
@BindingResult
はメソッド引数として直前のフォームオブジェクトのバリデーション結果を格納します。@BindingResult
はメソッドの引数の並び順をバリデーション対象の直後にすることが必須なので注意してください。
"create", params = "confirm") (value = |
😎 リダイレクト先にオブジェクトを送る:RedirectAttributes
RedirectAttributes
はリダイレクト先にオブジェクトを送るのに使います。
"create") (value = |
RedirectAttributes
のaddFlashAttribute
とaddAttribute
メソッドを紹介します。
メソッド | 説明 |
---|---|
addFlashAttribute |
sessionでオブジェクトを送付するため、リダイレクト時に一度だけ有効なデータの受け渡し方になります |
addAttribute |
URLパラメータでオブジェクトを送付するため、その後何度でも有効な文字列となります |
🐡 参考リンク
- 【Spring MVC】@RequestMapping の基本
- java - Combine GET and POST request methods in Spring
- Spring Controllerの@PathVariableと@RequestParamの使い分け
- コントローラからビューに値を渡す
- spring - What are the differences between Model, ModelMap, and ModelAndView?
- Spring MVCのドキュメント「コントローラを実装する」を読む
- FlashScopeという考え方