Spring MVCでAnnotation-Basedなコントローラの作り方
前回の記事ではControllerをimplementsするという古いスタイルのControllerの作り方のサンプルを見てみました。
Spring2.5からは、@Controllerというアノテーションを使ってコントローラを定義する方法が紹介されています。
annotation-basedなControllerを作るメリットはいくつかありますが、一つ目は、コントローラクラスで複数のアクションを定義できることです。
似たようなアクションを同じコントローラのクラスに定義することができます。そのため、クラスの数を減らすことができます。
次に、アノテーションを使うことで、設定ファイルにリクエストマッピングを定義しなくても良くなります。
Controller Annotation
以下のようにクラス名の上にアノテーションを定義します。
@Controller public class HogeController { //request handling method }
こうやって@Controllerを書くことで、Springはコントローラを見つけることができます。
アノテーションを使う準備として、spring-context schemaを設定ファイルに書きます。
xmlns:context="http://www.springframework.org/schema/context"
STSを使ってプロジェクトを生成した場合はデフォルトで書かれていると思います。
そして、次に、
<context:component-scan base-package="sample2.controller"/>
この記述をすることで、コントローラクラスを含むパッケージを認識させることができます。
指定したサブパッケージも検索対象になります。
RequestMapping Annotation
RequestMappingアノテーションは名前のとおり、リクエストとメソッドをマッピングします。
@Controller public class HogeController { @RequestMapping(value = "hoge_input") public String inputHoge() { //do something return "hogeForm"; } }
valueという属性を設定することで、URLとメソッドをマッピングします。
http://domain/context/hoge_input
が上のメソッドと紐付けられます。
valueを空にした場合は、
http://domain/context
のURLと紐付けられます。
valueの他にもmethodという属性があり、HTTPのメソッドを指定することができます。
@Controller public class HogeController { @RequestMapping(value = "hoge_input", method={RequestMethod.POST, RequestMethod.PUT}) public String inputHoge() { //do something return "hogeForm"; } }
methodの指定がない場合は、全てのHTTPメソッドを処理します。
では、次の記事では実際にAnnotation Based Controllerのサンプルを作ってみます。
<参考>
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2014/08/01
- メディア: 単行本
- この商品を含むブログ (1件) を見る