Spring Bootのコントローラークラスについて
本記事は,Spring Bootのコントローラーについて,主な役割や基本的な記述方法について説明する.
「Spring Boot」とは何かについては,以下の記事にまとめたのでそちらを参照してください.
主な役割
コントローラークラスの役割を簡単に説明すると,クライアントからのリクエストを受け取り,適切な処理を実行してレスポンスを返すことである.
コントローラークラスに,処理内容とその処理を呼ぶためのURLを記述することによって,クライアント(Webブラウザなど)はそのURLをリクエストとして送ることによって,対応した処理の結果を受け取ることができる.
基本的な記述方法
コントローラークラスを作成するために以下の3つを記述する.
1.Controllerアノテーション
2.Mappingアノテーション
3.処理内容
それぞれについてもう少し詳しく説明する.
//例
@Controller // <= Controllerアノテーション
public class HelloController {
@RequestMapping(value = "/hello") // <= Mappingアノテーション
public String hello(){
return "Hello, World"; // <= 処理内容
}
}
1.Controllerアノテーション
クラスに@Controller
または@RestController
というアノテーションを付与する.そうすることで,Spring Bootはそのクラスをコントローラーとして認識するようになる.
@Controller
と@RestController
の違い
この2つはコントローラーの機能として記述したメソッドがリクエストを受けた際に返すものが異なる.
1.RestControllerアノテーション
@RestController
public class HelloRestController {
@GetMapping("/hello")
public String hello(){
return "Hello, World"; //文字列を返す
}
}
@RestController
はJSONやXMLを返す.例のように,文字列を返すこともできるし,オブジェクトを返すこともできる.
2.Contollerアノテーション
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello"; //hello.htmlを返す
}
}
画面遷移用で,戻り値は遷移先のHTMLのファイル名を返す.上記の例では,"hello.html"に遷移する.
2.Mappingアノテーション
Mappinngアノテーションをクラスやメソッドに付与することで,マッピングすることができる.そもそもマッピングとは,HTMLのフォームリクエストとそれに対する処理をつなげることで,ビューの特定の処理によって提供する処理を分けることができる.
基本的なMappingアノテーション
1.HTTPリクエストに対応するMappingアノテーション
Spring Bootには,以下のようなHTTPリクエストに対応するアノテーションが用意されている.
アノテーション | HTTPリクエスト | 役割 |
---|---|---|
@GetMapping |
GET | データの取得 |
@PostMapping |
POST | データの変更(主に新規データの作成) |
@PutMapping |
PUT | データの変更(主に既存データの更新) |
@DeleteMapping |
DELETE | データの削除 |
このようなHTTPリクエスト応じた使い分けをすることで,HTTPメソッドを作成することができる.
2.RequestMappingアノテーション
@RequestMapping
はHTTPメソッドを限定しないでマッピングすることができる.1つのメソッドに対して,複数のHTTPメソッドを実装できる(例えば,GetMappingとPostMappingなど).
<使用する属性>
それぞれのアノテーションには,以下のように属性を指定することでマッピングを限定する.
@RequestMapping(value = "/hello", method = RequestMethod.GET)
String hello(){
//処理
}
- Value属性
メソッドを紐づけるURLパスを指定する属性. - Method属性
GET,POSTなどのHTTPリクエストを指定する属性.
3.記述する主な処理
それぞれのアノテーションを記述した後は,実際に行う処理をメソッド内に記述する.記述する内容としては以下の5つの機能で構成する.
1.リダイレクト処理
リダイレクトは処理の結果や条件に応じて別のURLにユーザを転送する機能
2.ビュー(HTMLテンプレート)との連携
ビューとなるHTMLにデータを渡す機能
3.モデルの更新
フォームから受け取ったデータで,データベースなどを更新する機能
4.ビジネスロックの実行
アプリケーションとしてのコアとなる処理を実行する機能
5.エラー処理
フォームのデータ処理中にエラーが発生した場合,エラーに対して適切な処理を行う機能
参考