LoginSignup
3
7

Spring Boot Controller編

Last updated at Posted at 2023-06-16

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"; //文字列を返す
    }
}

@RestControllerJSONXMLを返す.例のように,文字列を返すこともできるし,オブジェクトを返すこともできる.

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.エラー処理
フォームのデータ処理中にエラーが発生した場合,エラーに対して適切な処理を行う機能

参考

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7