山崎屋の技術メモ

IT業界で働く中で、気になること、メモしておきたいことを書いていきます。

【Spring MVC】@RequestMapping の基本

f:id:yyama1556:20160812103358p:plain

Spring MVC の @RequestMapping の基本をメモしておく。

value 属性

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

	@RequestMapping(value = "/aaa")

こう指定することで例えば "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 MVC の基本について書いた記事はこちら。

yyama1556.hateblo.jp


今日はここまで。


Spring 関連記事へのリンク集つくりました。