山崎屋の技術メモ

IT業界で働く中でテクノロジーを愛するSIerのシステムエンジニア👨‍💻 | AndroidとWebアプリの二刀流🧙‍♂️ | コードの裏にあるストーリーを綴るブログ執筆者✍️ | 日々進化するデジタル世界で学び続ける探究者🚀 | #TechLover #CodeArtisan、気になること、メモしておきたいことを書いていきます。

【Spring MVC】@RequestMapping の基本

f:id:yyama1556:20200202161017p:plain

Spring MVC の @RequestMapping の使い方をメモしておく。Spring Boot も Spring MVC を使っているので使い方はまったく同じ。

RequestMappng とは

Spring MVC のコントローラに付与して、リクエスト URL に対して、どのメソッドが処理を実行するか定義するアノテーション。

value 属性

value に処理対象とするURLを指定する。

	@RequestMapping(value = "/aaa")
	public String method() {
		return "index";
	}

こう指定することで例えば "http://localhost:8080/aaa/" にアクセスするとこのコントローラが実行される。

Spring というかアノテーションのルールとして、value 属性ひとつだけを指定するのであれば、"value =" の部分は省略可能。したがって、次のように書き換えることもできる。

	@RequestMapping("/aaa")

対応するURLを複数指定する際は次のようにする。

	@RequestMapping(value = { "/", "/index" })

"value =" を省略して次のように書くこともできる。

	@RequestMapping({ "/", "/index" })

value 属性自体を省略することもできる。

	@RequestMapping()

この場合、次の記載と同じ意味となる。

	@RequestMapping("/")

また "value" は "path" と書き換えても同じである。

	@RequestMapping(value = "/aaa")

は、

	@RequestMapping(path = "/aaa")

と同じ意味となる。

method 属性

POST でアクセスされたリクエストを処理する場合。

	@RequestMapping(path = "/input", method = RequestMethod.POST)

GET でアクセスされたリクエストを処理する場合。

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

org.springframework.web.bind.annotation.RequestMethod を static インポートしてしまえば、もう少し簡潔に書ける。

	import static org.springframework.web.bind.annotation.RequestMethod.*;

	・
	・
	・

	@RequestMapping(path = "/input", method = GET)

( Eclipse に static import を勝手に整理されてしまい困っている場合はこちらを参照して設定を変更して欲しい。)


POST と GET 両方のリクエストを処理する場合は {} で囲んで複数指定できる。

	import static org.springframework.web.bind.annotation.RequestMethod.*;

	・
	・
	・

	@RequestMapping(path = "/input", method = { GET, POST })

HTTP リクエストのメソッドは GET,POST 以外にも次のものが定義されていて、@RequestMapping の method で指定することも可能。

DELETE
HEAD
OPTIONS
PATCH
PUT
TRACE

method 属性を省略すると POST を処理する設定と同等になる。したがって POST のみを処理したい場合、method 属性自体を省略できる。

Spring Framework 4.3 から追加されたアノテーション

RequestMapping を簡略して書ける GetMapping と PostMapping アノテーションが追加された。

Post の場合、

	@RequestMapping(path = "/input", method = RequestMethod.POST)

は、

	@PostMapping("/input")

に置き換えることができる。

Get も同様に、

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

は、

	@GetMapping("/input")

に置き換えることができる。

他にも RequestMapping を置き換えられる、以下のアノテーションが追加されている。

DeleteMapping
PatchMapping
PutMapping

今日はここまで。

Spring 関連記事へのリンク集はこちら。
www.shookuro.com


Spring MVC の基本について書いた記事はこちら。
www.shookuro.com


Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発

Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発

Spring Framework 4 プログラミング入門

Spring Framework 4 プログラミング入門

  • 作者:掌田津耶乃
  • 出版社/メーカー: 秀和システム
  • 発売日: 2015/05/21
  • メディア: Kindle版