zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    常用的虚拟化产品
    KVM虚拟化
    Jenkins流水线项目发布流程
    Jenkins安装,界面说明
    敏捷估算与规划—总结
    敏捷估算与规划—跟踪与交流
    敏捷估算与规划—进度安排
    敏捷估算与规划—为价值做规划
    敏捷估算与规划—问题与目标
    用户故事与敏捷方法笔记 --- 估算与计划
  • 原文地址:https://www.cnblogs.com/limingming/p/4520331.html
Copyright © 2011-2022 走看看