Spring Mvc 输出Json(iwantmoon.com出品)

原文:http://iwantmoon.com/Post/f94e49caf9b6455db7158474bab4c4dd

 

因为工作需要,现在要去做开放平台,考虑了多种方案之后,基本确定 下来,Http Api and Web Serivce两种,REST API 就需要通过Spring Mvc输出Json,这里面其实还是有一些工作可以做的,比如大量用户访问的情况下,怎保证性能、保证流量和稳定性。当然本篇我们还是主要讨论如何去实现它。

接下来,大家跟着我做吧。

首先,我们要了解Spring Mvc本身并没有提供JsonView的支持,这里面,我们需要通过Jackson 第三方实现的帮助,实现他。

那么我们要加入依赖引用:

<!-- json -->

        <dependency>

            <groupId>org.codehaus.jackson</groupId>

            <artifactId>jackson-core-lgpl</artifactId>

            <version>1.8.1</version>

        </dependency>



        <dependency>

            <groupId>org.codehaus.jackson</groupId>

            <artifactId>jackson-mapper-lgpl</artifactId>

            <version>1.8.1</version>

        </dependency>



        <dependency>

            <groupId>com.fasterxml.jackson.core</groupId>

            <artifactId>jackson-core</artifactId>

            <version>2.1.0</version>

        </dependency>

        <dependency>

            <groupId>com.fasterxml.jackson.core</groupId>

            <artifactId>jackson-databind</artifactId>

            <version>2.1.0</version>

        </dependency>

        <dependency>

            <groupId>com.fasterxml.jackson.core</groupId>

            <artifactId>jackson-annotations</artifactId>

            <version>2.1.0</version>

        </dependency>

上面是Jackson部分,下面还有spring mvc和其他的部分

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-webmvc</artifactId>

            <version>${spring.version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-context-support</artifactId>

            <version>${spring.version}</version>

        </dependency>

        <dependency>

            <groupId>javax.servlet</groupId>

            <artifactId>javax.servlet-api</artifactId>

            <version>${servlet.version}</version>

            <scope>provided</scope>

        </dependency>

        <dependency>

            <groupId>javax.servlet</groupId>

            <artifactId>jstl</artifactId>

            <version>${jstl.version}</version>

        </dependency>

        <dependency>

            <groupId>javax.servlet.jsp</groupId>

            <artifactId>jsp-api</artifactId>

            <version>${jsp.version}</version>

            <scope>provided</scope>

        </dependency>    

mvn clean install

经过一段时间的等待,依赖包下载到本地,OK,我们可以开始配置 我们的项目了。

由于本文中心是Spring mvc 输出Json,所以会略过Spring mvc的配置,如果需要,大家可以参考spring.io

下面,我们加入Jaskson的配置:

<bean id="stringConverter" class="org.springframework.http.converter.StringHttpMessageConverter">

        <property name="supportedMediaTypes">

            <list>

                <value>text/plain;charset=UTF-8</value>

            </list>

        </property>

    </bean>



    <!-- 输出对象转JSON支持 -->

    <bean id="jsonConverter"

          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>

    <bean

            class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

        <property name="messageConverters">

            <list>

                <ref bean="stringConverter"/>

                <ref bean="jsonConverter" />

            </list>

        </property>

    </bean>

写一个Sample Controller:

@RestController

public class JsonController extends BaseController {

    @RequestMapping(value = "/user", method = RequestMethod.GET)

    @JsonView(User.WithoutPasswordView.class)

    public User getUser() {

        return new User("eric", "7!jd#h23");

    }

}
public class User {



    public interface WithoutPasswordView {};

    public interface WithPasswordView extends WithoutPasswordView {};



    private String username;

    private String password;



    public User() {

    }



    public User(String username, String password) {

        this.username = username;

        this.password = password;

    }



    @JsonView(WithoutPasswordView.class)

    public String getUsername() {

        return this.username;

    }



    @JsonView(WithPasswordView.class)

    public String getPassword() {

        return this.password;

    }

}

OK,下面是运行结果:

 

大家有问题,欢迎加入我们敲代码(http://iwantmoon.com)官方QQ群:299388502

 

你可能感兴趣的:(spring mvc)