【Spring Boot】コントローラーでリクエストをハンドリングする
@Controllerアノテーションで
コントローラーとして役割を持たせたクラスファイルでリクエストをハンドリングする。
クラスメソッドに、リクエストを受け付けるアノテーション@RequestMappingを使用する。
アノテーションに続くカッコにリクエストのパスを指定する。
メソッドはString型で定義し、
表示(または遷移)させたい画面のテンプレートファイル名を文字列としてreturnする。
index.htmlの場合、return “index”
@RequestMapping("/") String index() { return "index"; }
リクエストがGET送信かつハンドリングするメソッドが一つしかない場合の記述
アプリケーション起動後、http://localhost:8080/にアクセス
@RequestMappingでルートパスを指定している。
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HomeController { @RequestMapping("/") String index() { return "index"; } }
マッピングの記述を、
@RequestMapping(value=”/”,method=RequestMethod.GET)
または、
@GetMapping
のようにリクエストの種類GETを明示的に記述しても同じようにマッピングできる。
異なるリクエストURLをハンドリングする
ひとつのコントローラ内で異なるリクエストを受け付ける。
※リクエストURLが/(ルート)の場合と/otherの場合それぞれ呼び出すページを変更している。
@Controller public class HomeController { @RequestMapping("/") String index() { return "index"; } @RequestMapping("/other") String toOther() { return "other"; } }
リクエストの種類がGETかPOSTかによってハンドリングするメソッドを変える
クラスの先頭(@Controllerアノテーションの下)に
@RequestMappingアノテーションとURLのパスを記述し、
どのメソッドも共通のリクエストURLをハンドリング出来るようにする。
リクエストの種類によって呼び出すメソッドを切り替える。
- リクエストの種類がGETの場合
- @RequestMapping(method=RequestMethod.GET)
- リクエストの種類がPOSTの場合
- @RequestMapping(method=RequestMethod.POST)
※送信されてくるリクエストパラーメーターを@RequestParamで受け取る事が出来る。
@Controller @RequestMapping("/vending-machine") public class HomeController { @RequestMapping(method=RequestMethod.GET) public String index(Model model) { model.addAttribute("message", "お名前を入力してください。"); return "index"; } @RequestMapping(method=RequestMethod.POST) public String send(@RequestParam("name")String name, Model model) { model.addAttribute("message", "こんにちは" + name + "さん。"); return "index"; } }
GETは@GetMapping
POSTは@PostMapping
でハンドリングすることも出来る。
@Controller @RequestMapping("/") public class HomeController { @GetMapping public String index(Model model) { model.addAttribute("message", "お名前を入力してください。"); return "index"; } @PostMapping public String send(@RequestParam("name")String name, Model model) { model.addAttribute("message", "こんにちは" + name + "さん。"); return "index"; } }