■@Controllerを使う
前回、ごくごくシンプルなWebアプリのスクリプトを書きました。これはこれで簡単に作れていいのですが、ちょっと気になる点があります。それは「@RestControllerを使う」という点です。これは名前からしてRESTfulなサービスを作るのに用意されているもの、という感じがしますね(実際そうですが)。もっと普通のコントローラーはないのでしょうか。
実は、あります。「@Controller」というものです。これがSpring MVCのコントローラーを作成する際の基本となるアノテーション、といってよいでしょう。では、これを実際に使ってみましょう。
前回作成したapp.groovyを、下のリスト欄のように書き換えてみてください。そしてspring runコマンドで実行してみましょう。前回と同じように、ごくシンプルなものですがHTMLによるWebページが表示されます。
ここでは、クラスのアノテーションが@RestControllerから@Controllerに変わっています。それにくわえてもう1つ、変わっているところがあります。メソッドに、新たに「@ResponseBody」というアノテーションが追加になっていますね。
これは、Webのレスポンスボディを持つものであることを示すアノテーションです。要するに、このメソッドにアクセスしたら、レスポンスが返るよ、ということを指定していたのですね。
前回の@RestControllerは、なぜいらなかったのか? それは、@RestControllerは、@Cotroller + @ResponseBodyの役割を果たすものだったからです。だから不要だったんですね。
(※正確には、@RestController = @Controller + @ResponseBodyではありません。@RestControllerには、@Controllerに含まれる@Componentがありません。両者は微妙に違うものなんです。なので、@RestController ∋ @Controllerというわけではありません。が、まぁだいたい「@Controllerに@ResponseBodyを足したものが@RestControllerだ」と思っていいでしょう)
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
@Controller
class MyBootApp {
@RequestMapping("/")
@ResponseBody
def top() {
"<html><body><h1>Hello</h1><p>it's @Controller annotation sample!</p></body></html>";
}
}

記事のリストに戻る