Spring 3 MVCとJSONの例

このチュートリアルでは、Spring MVCフレームワークでJSONデータを出力する方法を説明します。

使用される技術:

  1. Spring 3.2.2.RELEASE

  2. ジャクソン1.9.10

  3. JDK 1.6

  4. Eclipse 3.6

  5. Maven 3

P.S Spring 3では、JSONデータを出力するために、プロジェクトのクラスパスにhttp://jackson.codehaus.org/[Jackson]ライブラリを置いてください。 +

プロジェクトの依存関係

JacksonとSpringの依存関係を取得します。

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
        http://maven.apache.org/maven-v4__0__0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mkyong.common</groupId>
    <artifactId>SpringMVC</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>SpringMVC Json Webapp</name>
    <url>http://maven.apache.org</url>

    <properties>
        <spring.version>3.2.2.RELEASE</spring.version>
        <jackson.version>1.9.10</jackson.version>
        <jdk.version>1.6</jdk.version>
    </properties>

    <dependencies>

        <!-- Spring 3 dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Jackson JSON Mapper -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>${jackson.version}</version>
        </dependency>

    </dependencies>

    <build>
        <finalName>SpringMVC</finalName>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.9</version>
            <configuration>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>false</downloadJavadocs>
                <wtpversion>2.0</wtpversion>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
            </configuration>
          </plugin>
        </plugins>
    </build>

</project>

2.モデル

シンプルなPOJOで、後でこのオブジェクトをフォーマットされたJSONデータとして出力します。

package com.mkyong.common.model;

public class Shop {

    String name;
    String staffName[];

   //getter and setter methods

}

3.コントローラー

戻り値として `@ ResponseBody`を追加してください。温泉が見る

  1. Jacksonクラスライブラリがプロジェクトのクラスパスに存在する

  2. `mvc:annotation-driven`が有効です

  3. @ResponseBodyで注釈を付けられた戻りメソッド

SpringはJSON変換を自動的に処理します。

JSONController.java

package com.mkyong.common.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.mkyong.common.model.Shop;

@Controller
@RequestMapping("/kfc/brands")
public class JSONController {

    @RequestMapping(value="{name}", method = RequestMethod.GET)
    public @ResponseBody Shop getShopInJSON(@PathVariable String name) {

        Shop shop = new Shop();
        shop.setName(name);
        shop.setStaffName(new String[]{"mkyong1", "mkyong2"});

        return shop;

    }

}

4. mvc:アノテーション駆動型

あなたのSpring設定XMLファイルで `mvc:annotation-driven`を有効にしてください。

mvc-dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <context:component-scan base-package="com.mkyong.common.controller"/>

    <mvc:annotation-driven/>

</beans>

5.デモ

「spring-mvc-json-demo」、width = 585、height = 235]

ソースコードをダウンロードする

ダウンロードする - SpringMVC-Json-Example.zip (21 KB)

参考文献

ドキュメンテーション]。 高パフォーマンスJSONプロセッサ

  1. link://spring-mvc/spring-3-mvc-and-xml-example/[Spring MVCとXML

例]

前の投稿:JUnit - 予想される例外テスト