【springMVC】コントローラクラスの解説

spring

前回、「springsource tool suite Webアプリを自動生成してみよう編」で作成しましたspringMVCを使ったWebアプリのコントローラクラスについて解説を行います。

[スポンサーリンク]

strutsでいうところのActionクラスに該当するのがspringMVCのコントローラクラスになります。
このコントローラクラス、MVCでいうところの「C」(Controller)に該当します。そのまんまの名前なので覚えやすいですね。(笑)

この章でやること

springMVCのコントローラクラスについての解説を行います。

springMVCの全体を見てみよう

springsource tool suite Webアプリを自動生成してみよう編」で作成したspringMVCプロジェクトの概要です。
springMVC特有のファイルのみをクローズアップしています。web.xmlやlog4jについてはおなじみなので省略します。(web.xmlやlog4jについてもいつかやりたいなぁ。)

springMVCプロジェクト

springMVCのコントローラクラス

上記のコントローラクラスの解説を行っていきます。(デフォルトのままだと少し見にくいので改行を入れました。ソース内容自体は変更していません。)

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	private static final Logger logger =
			LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! the client locale is "+
						locale.toString());
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance
								(DateFormat.LONG,
							     DateFormat.LONG,
							     locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}
	
}

実行結果

こちらのコントローラクラスの実行方法については、「springsource tool suite Webアプリを自動生成してみよう編」を参照して下さい。
要点だけまとめますと、ブラウザを立ち上げてアドレスバーに「http://localhost:8080/AplExample」と入力します。
実行結果

springMVCのコントローラクラスで重要な点は3箇所あります。それぞれ以下で解説をしていきます。

解説その1

まず1箇所目ですが、このクラスをコントローラクラスと識別するためにクラス名先頭に「@Controller」を付けます。これだけでspringはこのクラスをコントローラクラスだと認識してくれます。

解説その2

そして2箇所目がパス(URL)です。メソッド名の先頭に「@RequestMapping(value = "/", method = RequestMethod.GET)」とあります。これはパスが"/"で、リクエストメソッドはGETであると宣言しています。
このspringMVCプロジェクトを起動して、「http://localhost:8080/コンテキスト名/」をブラウザに入力しますとこのコントローラクラスが起動します。パスを"/test"にすると「http://localhost:8080/コンテキスト名/test/」でこのコントローラクラスが起動します。

解説その3

最後に3箇所目ですが、画面描画するためのjspの指定方法です。jspの指定方法は「return "home";」リターンで指定します。ここでは"home"を指定しているので、home.jspが画面描画されます。以下はhome.jspのソースコードになります。
jspは「Hello world!」と時刻(${serverTime})を表示するだけのシンプルな作りになっています。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
	<title>Home</title>
</head>
<body>
<h1>
	Hello world!  
</h1>

<P>  The time on the server is ${serverTime}. </P>
</body>
</html>

最後に

springMVCのコントローラクラスですが、アノテーションを使って制御することが理解できればOKだと思います。
またspringMVCのjavaプロジェクト自体(設定ファイルとか)もstruts等と比較してもそれほど大きくは異なりません。ベーシックな作りだと思います。今までwebアプリを開発してきたひとなら難なく解釈出来るのではないでしょうか。
次回はこのひな型(テンプレート)を少しカスタマイズして、JSONを返却するRestFullなAPIにカスタマイズしていきたいと思います。

続きは

続いての章では、
jsonicを使ってrestfullなapiを作ろうを紹介していきます。