springMVC整合FastJson实现RestFul风格API

来源:互联网 发布:windows优化 编辑:程序博客网 时间:2024/05/16 11:14

首先,

直接来web.xml文件

<?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格式返回

<?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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://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"><beanclass="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

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)@ResponseBodypublic List<UserVO> listUser() {return lists;}@RequestMapping(value = "/{id}", method = RequestMethod.GET)@ResponseBodypublic UserVO findUserById(@PathVariable("id") String id) {for (UserVO userVO : lists) {if (userVO.getId().equals(id)) {return userVO;}}return new UserVO();}@RequestMapping(method = RequestMethod.POST)@ResponseBodypublic UserVO insertUser() {return null;}@RequestMapping(value = "/{id}", method = RequestMethod.PUT)@ResponseBodypublic UserVO updateUser(@PathVariable("id") String id) {return null;}}
UserVO.java

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

0 0
原创粉丝点击