您的位置:首页 > 编程语言 > Java开发

springMVC整合FastJson实现RestFul风格API

2017-03-06 09:08 597 查看
首先,

直接来web.xml文件

[html] view
plain copy

 





<?xml version="1.0" encoding="utf-8"?>  

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  

  

    <display-name>springmvc-api</display-name>  

  

    <!-- 字符编码过滤 -->  

    <filter>  

        <filter-name>CharacterEncodingFilter</filter-name>  

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  

        <init-param>  

            <param-name>encoding</param-name>  

            <param-value>UTF-8</param-value>  

        </init-param>  

        <init-param>  

            <param-name>forceEncoding</param-name>  

            <param-value>true</param-value>  

        </init-param>  

    </filter>  

    <filter-mapping>  

        <filter-name>CharacterEncodingFilter</filter-name>  

        <url-pattern>/*</url-pattern>  

    </filter-mapping>  

  

    <!-- Spring 配置 -->  

    <listener>  

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  

    </listener>  

    <context-param>  

        <param-name>contextConfigLocation</param-name>  

        <param-value>classpath:applicationContext.xml</param-value>  

    </context-param>  

  

    <!-- Spring MVC 配置 -->  

    <servlet>  

        <servlet-name>springMVC</servlet-name>  

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

        <init-param>  

            <param-name>contextConfigLocation</param-name>  

            <param-value>classpath:applicationContext.xml</param-value>  

        </init-param>  

        <load-on-startup>1</load-on-startup>  

    </servlet>  

    <servlet-mapping>  

        <servlet-name>springMVC</servlet-name>  

        <url-pattern>/</url-pattern>  

    </servlet-mapping>  

  

</web-app>  

其次,

springMVC配置,默认[<servlet-name>]-servlet.xml,个人仍然喜欢自己命名,applicationContext.xml

由于只是API,返回JSON格式,所以就配置页面等等了,下面这个配置,会自动把返回的对象转换成JSON格式返回

[html] view
plain copy

 





<?xml  version="1.0" encoding="UTF-8"?>  

<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.1.xsd  

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd  

        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">  

  

    <!-- 扫描路径 -->  

    <context:component-scan base-package="com.study.api" />  

  

    <!-- 添加注解驱动 -->  

    <mvc:annotation-driven>  

        <mvc:message-converters register-defaults="false">  

            <bean  

                class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">  

                <property name="supportedMediaTypes">  

                    <list>  

                        <!-- 避免IE返回时出现下载提示! -->  

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

                        <value>application/json;charset=UTF-8</value>  

                    </list>  

                </property>  

            </bean>  

        </mvc:message-converters>  

    </mvc:annotation-driven>  

  

</beans>  

配置就这么多,下面就是Java代码了

UserController.Java

[java] view
plain copy

 





package com.study.api.controller;  

  

import java.util.ArrayList;  

import java.util.List;  

  

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.study.api.vo.UserVO;  

  

@Controller  

@RequestMapping("/v1/users")  

public class UserController {  

  

    private static List<UserVO> lists = null;  

  

    static {  

        lists = new ArrayList<UserVO>();  

        UserVO user = new UserVO();  

        user.setId("1");  

        user.setName("张三");  

        UserVO user2 = new UserVO();  

        user2.setId("2");  

        user2.setName("李四");  

        lists.add(user);  

        lists.add(user2);  

    }  

  

    @RequestMapping(method = RequestMethod.GET)  

    @ResponseBody  

    public List<UserVO> listUser() {  

        return lists;  

    }  

  

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)  

    @ResponseBody  

    public UserVO findUserById(@PathVariable("id") String id) {  

        for (UserVO userVO : lists) {  

            if (userVO.getId().equals(id)) {  

                return userVO;  

            }  

        }  

        return new UserVO();  

    }  

  

    @RequestMapping(method = RequestMethod.POST)  

    @ResponseBody  

    public UserVO insertUser() {  

        return null;  

    }  

  

    @RequestMapping(value = "/{id}", method = RequestMethod.PUT)  

    @ResponseBody  

    public UserVO updateUser(@PathVariable("id") String id) {  

        return null;  

    }  

}  

UserVO.java

[java] view
plain copy

 





package com.study.api.vo;  

  

public class UserVO {  

  

    private String id;  

    private String name;  

  

    public String getId() {  

        return id;  

    }  

  

    public void setId(String id) {  

        this.id = id;  

    }  

  

    public String getName() {  

        return name;  

    }  

  

    public void setName(String name) {  

        this.name = name;  

    }  

  

}  

注:springmvc整合fastjson返回json格式,对版本有要求,

fastjson要求1.1.33及以上吧,我用的是1.1.41可行

spring要求版本不能太高好像,据说高版本消息装换器只能支持jackjson,我开始用户3.2.4.RELEASE不行,后来换到3.1.1.RELEASE可行

项目(maven)源码:http://download.csdn.net/detail/kaixinkuaikuailai/9426629

项目(maven)jar包:http://download.csdn.net/detail/kaixinkuaikuailai/9426631

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  RestFul springMVC FastJson