Movatterモバイル変換


[0]ホーム

URL:


酒と泪とRubyとRailsと

Spring FrameworkのControllerの基本的なアノテーション


JavaのSpring FrameworkのMVCのControllerでよく使う基本的なアノテーション@RequestMappingや、@BindingResult、オブジェクトのModelなどを紹介します。

🐝Controllerの処理対象のパスを指定:@RequestMapping

value属性

Java Spring MVCのControllerの処理対象となるURLを@RequestMappingアノテーションのvalueオプションで指定します。(valueは最初の/は省略できます)

// value で処理対象のパスを指定
@RequestMapping(value ="books")

// valueだけなら省略可能
@RequestMapping("books")

// 複数のパスを指定できる
@RequestMapping(value = {"books","magazines" })

method属性

GETやPOSTなどのmethodオプションで指定します。

// methodでmethodを指定
@RequestMapping(value ="books", method = RequestMethod.GET)

// 複数のmethodを指定できる
@RequestMapping(value ="books", method = { RequestMethod.GET, RequestMethod.POST })

GET POST, PUT, PATCH, DELETE, HEAD, OPTIONS, TRACEを指定可能です。

🐡GETリクエストのアノテーション:@GetMapping

@RequestMappingのGETリクエスト用のアノテーションが@GetMappingです。記述の省略と可読性の向上が目的です。

@GetMapping("books")
publicindex(){/* ...*/ }

🤔POSTリクエストのアノテーション:@PostMapping

@RequestMappingのPOSTリクエスト用のアノテーションが@PostMappingです。記述の省略と可読性の向上が目的です。

@PostMapping("books/create")
publiccreate(){/* ...*/ }

🎃RESTパラーメータの受取:@PathVaribable

@PathVaribable/books/1のようにREST形式のURLのパラメータ1を受け取るのに使います。value属性は省略でき、省略した場合は引数名をパラメータ名と解釈します。

@RequestMapping("/books/{id}")
public Stringshow(@PathVaribable(default =1) Integer id, ModelMap model){
Book book = bookService.findById(id);
model.addAttribute("book", book);
return"index";
}

🐞リクエストパラーメータの受取:@RequestParam

@RequestParam?order=priceのようにリクエストパラメータorderを受け取るのに使います。value属性は省略でき、省略した場合は引数名をパラメータ名と解釈します。

@RequestMapping("/books")
public Stringshow(@PathVaribable(default ="updatedTime") String order, ModelMap model){
List books = bookService.findAllOrderBy(order);
model.addAttribute("books", books);
return"index";
}

🎳コントローラからビューに値を渡す:ModelMap

コントローラからビューに値を渡すのに、メソッドの仮引数にModelMapを指定する方法があります。

@RequestMapping("/books")
public Stringsample2(ModelMap model){
model.addAttribute("message","こんにちは");
return"index";
}

ModelModelMapModelAndViewの簡単な説明です。

オプション説明
ModelModelはインターフェースでaddAttributeメソッドなどをもつ
ModelMapModelMapはMAPインターフェースの実装。Mapメソッドをもと
ModelAndViewModelMapとviewオブジェクトのコンテナ

🏀RequestMappingのアクション前に実行:@ModelAttribute

@ModelAttributeをメソッドにつけるとRequestMappingのアクションを実行する前にそのメソッドが呼び出されます。

@GetMapping(value ="create")
Stringcreate(){
// 2番目に実行
}

@ModelAttribute
SomeFormsetupForm(){
// 1番目に実行
}

@ModelAttributeはアクションの引数に付与することもできます。その場合は自動的に同名のフィールドにマッピングされ、リクエストスコープにも設定されます。

🐮バリデーション結果を格納:@BindingResult

@BindingResultはメソッド引数として直前のフォームオブジェクトのバリデーション結果を格納します。@BindingResultはメソッドの引数の並び順をバリデーション対象の直後にすることが必須なので注意してください。

@PostMapping(value ="create", params ="confirm")
public StringcreateConfirm(@Validated CommentForm form, BindingResult result, Model model){
if (result.hasErrors()) {
return createRedo(form, model);
}
return VIEW_BASE +"createConfirm";
}

🎉リダイレクト先にオブジェクトを送る:RedirectAttributes

RedirectAttributesはリダイレクト先にオブジェクトを送るのに使います。

@PostMapping(value ="create")
public Stringcreate(@Validated AbcForm form, BindingResult result, Model model, RedirectAttributes redirectAttributes){
if (result.hasErrors()) {
return createRedo(form, model);
}
// データの登録処理..

redirectAttributes.addFlashAttribute("message","新規レコードを作成しました")

return"redirect:/articles";
}

RedirectAttributesaddFlashAttributeaddAttributeメソッドを紹介します。

メソッド説明
addFlashAttributesessionでオブジェクトを送付するため、リダイレクト時に一度だけ有効なデータの受け渡し方になります
addAttributeURLパラメータでオブジェクトを送付するため、その後何度でも有効な文字列となります

🗽参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍

概要はじめに基本概念初心者向け入門資料整数(int, log)文字(char)文字列(String)コレクションと配列マップ(Map)セット(Set)日付(Date)列挙(Enum)バイト(byte)正偽型(boolean)プリミティブ型と参照型Optional型文法修飾子クラスメソッド例外処理初期化ブロック変数インタフェースについてリフレクションswitch文Comparable I/Fアノテーションイテレータ(iterator)Stream API/LambdaSpring Framework概要Hello WorldDI(依存性の注入)アスペクト指向プログラミングデータバインディングと型変換Controllerアノテーションフォーム利用プロパティ(設定値)管理バリデーションライブラリThymeleaf(テンプレート)Lombok(ボイラープレート)Jackson(JSONライブラリ)MyBatis(OR Mapper)JUnit(ユニットテスト)HibernateデザインパターンファクトリパターンシングルトンパターンテンプレートメソッドパターンTipsJavaのBest PracticeJavaのコーディング規約IntelliJ IDEAノウハウJSPについてJava Tips

[8]ページ先頭

©2009-2025 Movatter.jp