【Java で Webアプリ開発入門】Spring Boot の Controller でリクエストを処理しよう

何の記事?

Java で開発しなければならなく、ほぼ初心者の私が Spring Boot について勉強しているので、覚え書きにと・・・
今回は、コントローラーのアノテーションについてサラッとまとめていきます。


対象者

Java 上級者や、Spring Boot 中級者以上の対象ではないです(そんなに知識がないので笑)
どちらかというと、Rais とか他のフレームワークはやった事あるけど Java は初心者だし、もちろん Javaフレームワークも初めて・・・
という人向けです。一緒に勉強していくぐらいのつもりでお願いします笑


本題
@Controller

一般的なコントローラを作成する際につけるアノテーションです。
テンプレートを利用して HTML をレンダリングし、表示するという操作を行うページに用いられます。


@RestController

いわゆる RESTコントローラです。REST は、Representation State Transfer の略で分散システムのを実現するアプリケーションなどで 用いるアーキテクチャです。以下の4原則を守る事がポイントです。

  • アドレス可能性
  • ステートレス性
  • 接続性
  • 統一インターフェース

今回は、詳述しませんが(僕も良くわかっていないので笑)いつかまとめた記事を友達に作ってもらおうかと思います←人任せ
ただ簡単に言うと、外部からアクセスして必要な情報を取り出すシステムのこと?です。


@RequestMapping(value=アドレス,method=メソッド)

メソッドにつけるアノテーションでリクエストマッピングという機能を実現します。
アクセスするアドレスと実行するメソッドを結びつけるメソッドです。Rais では、ルーティングは別ファイルで指定しますね。
引数 method には、リクエストのメソッドを指定するのですが、例えば以下のようにします。必ず RequestMethod クラスのものを指定する必要があります。

@RequestMapping(value="/",method=RequestMethod.GET)

また、パス変数を用いる事も可能です。この場合は、@PathVariable アノテーションをつける事で参照します。

@RequestMapping("/{hoge}")

public String foo(@PathVariable int num){・・・}

こうした、このアドレス→このメソッドみたいに実行されるメソッドをリクエストハンドラと呼びます。


@ResponseBody

メソッドにつけるアノテーションで、サーバーからクライアントへの返答内容を意味するレスポンスをオブジェクトで設定できるようにします。オブジェクトを返す事で、それを元にページ内容が生成されます。
レスポンスとして返せるクラスのもっとも一般的なものは ModelAndView クラスだと思います。名前通り、データを管理するモデルと画面表示に関するビューの両方を扱います。メソッド定義の際に引数に入れてしまう事が多いです。


@RequestParam

これは、メソッド定義の際の引数の前につけられる事があり、パラメータの値を意味するアノテーションです。
@RequestParam("hoge")String str と引数を書いた場合、hoge という名前フォームから送られてきたパラメータを変数 str に自動的に渡されます。