2012年11月27日火曜日

Spring3 MVCでJSONを返すRESTもどき2

今回は電車の中でやってます。
というわけで、HTTPステータスコードを返す&Junitでのテストです。

ステータスコードの設定

ステータスコードの設定は、コントローラーのメソッドに対して@ResponseStatusアノテーションでできる。
ステータスコード自体は、HttpStatus.*を使う。

POSTで201(Created)を返すコードを追加した。
試してみるのにrest-clientを使用した。これは便利。

作成したコードは以下でコミット。
https://bitbucket.org/twopack/jsonrest/changeset/c903d770a37754f04ddd0dccaa83971e

RESTをJUnitでテストする

restfuseを使用。
前回のpom.xmlでJUnitのバージョンを4.6としていたせいで、@Ruleアノテーションが使えずはまった。。
他はrestfuseのトップにあるとおりでできた。
JSONについては、JacksonのObjectMapperを使ってMapにしてから比較するようにした。

作成したコードは以下でコミット。
https://bitbucket.org/twopack/jsonrest/changeset/1e233fb47e482b80fc3bf69156c04e76

2012年11月26日月曜日

Spring3 MVCでJSONを返すRESTもどき

Eclipseでプロジェクトを作るところから開始。
環境は、Mac OS X 10.7.5 + Eclipse Juno + Spring Tool Suite。

プロジェクトの作成

  1. File -> New -> Other -> Spring Template Project -> Spring MVC Project
    の順で選択していく。Importの確認メッセージがでたらYesで継続する。
  2. Project NameとPackage Nameを入力してFinish。
  3. junitのdependencyでエラーになったため、pom.xmlでバージョンを4.6に変更。
  4. Debug As -> Debug on Server でできたプロジェクトを実行する。
    今回はTomcat6で実行した。
  5. ここまでで、Hello Worldが表示される。

JSONを返す処理

Spring MVC Tip: Returning JSON from a Spring Controller
Spring MVCでJSONデータを返すための手順
を参考にして処理を作成した。
  1. pom.xmlにjackson-mapper-aslの依存関係を追加。
  2. servlet-context.xmlでMappingJacksonJsonViewを使うように内容を修正。
  3. コントローラーにGETに対する処理を追加。
    @RequestBody, @RequestMapping, @PathVariableのアノテーションを利用。
    Personクラスを返した結果として、JSONに変換が行われる。

とりあえず、ここまで。
ソースは以下にアップ。
https://bitbucket.org/twopack/jsonrest/changeset/5c0ddd8400ba24e9fbdd976dad288567cc653f94

2012年11月20日火曜日

Spring 3.0 + Thymeleafを試してみる(1)

まずはSpring 3.0のチュートリアルを探してきて写経しました。
Spring 3 Hello World Example

このチュートリアルでViewはJSPです。ここにThymeleafでのViewを追加します。
Thymeleafのチュートリアルを見ながら、テキストを置き換えるだけの簡単なコードを書きました。
TUTORIAL: THYMELEAF + SPRING 3
また、チュートリアルのサンプルソースがGithubで公開されています。

はまったところは以下。

  • resourcesの配置先をsrcの下に置く必要があった。
  • servletのxmlをJSPのものと分けたが、コントローラーも分けてあげる必要があった。

あとはチュートリアル通りでできました。
今のところはただのテキスト置き換えのみなので、他の構文も試してみたいと思います。

写経からThymeleaf用の追加までのソースは以下です。
https://bitbucket.org/twopack/helloworldspring3