SpringMVC整合FastJson实现RestFul风格API
fastjson
FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
项目地址:https://gitcode.com/gh_mirrors/fastj/fastjson
免费下载资源
·
首先,
直接来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.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
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
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
完
注:fastjson在1.2.24以及之前版本曝出代码执行漏洞,建议更新,亲试fastjson-1.2.29+Spring-xxx-4.1.6.RELEASE可行
GitHub 加速计划 / fastj / fastjson
3
1
下载
FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
最近提交(Master分支:5 个月前 )
c942c834 - 1 年前
5bc4709b - 1 年前
更多推荐
已为社区贡献1条内容
所有评论(0)